/******************************************************************************* * Copyright (c) 2007, 2018 Association for Decentralized Information Management * in Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation * Semantum Oy - gitlab #146 - tooltip support *******************************************************************************/ package org.simantics.browsing.ui.graph.impl.contributor.labeler; import java.util.Map; import org.simantics.browsing.ui.BuiltinKeys; import org.simantics.browsing.ui.BuiltinKeys.LabelerKey; import org.simantics.browsing.ui.NodeContext; import org.simantics.browsing.ui.PrimitiveQueryUpdater; import org.simantics.browsing.ui.Tester; import org.simantics.browsing.ui.content.Contributor; import org.simantics.browsing.ui.content.Labeler; import org.simantics.browsing.ui.content.Labeler.Modifier; import org.simantics.browsing.ui.content.LabelerFactory; import org.simantics.browsing.ui.graph.impl.contribution.LabelerContributionImpl; import org.simantics.db.ReadGraph; import org.simantics.db.UndoContext; import org.simantics.db.exception.DatabaseException; import org.simantics.utils.ReflectionUtils; abstract public class ColumnLabelerContributorImpl implements Contributor { abstract public Map getLabel(ReadGraph graph, T input) throws DatabaseException; public int getCategory(ReadGraph graph, T input) throws DatabaseException { return 0; } public Modifier getModifier(ReadGraph graph, UndoContext context, T input, String columnKey) throws DatabaseException { return null; } final private Class clazz; @Override public Tester getNodeContextTester() { return null; } public ColumnLabelerContributorImpl() { clazz = ReflectionUtils.getSingleParameterType(getClass()); } public ColumnLabelerContributorImpl(Class clazz) { this.clazz = clazz; } public boolean shouldCreateToolTip(Object event, T input) { return false; } public Object createToolTipContentArea(Object event, Object parent, T input) { return null; } @Override public LabelerFactory getFactory() { return new LabelerFactory() { @Override public Labeler create(final PrimitiveQueryUpdater updater, NodeContext context, final LabelerKey key) { return new LabelerContributionImpl(updater, context, key) { @SuppressWarnings("unchecked") @Override public Map labels(ReadGraph graph, NodeContext context) throws DatabaseException { T input = (T)context.getConstant(BuiltinKeys.INPUT); return ColumnLabelerContributorImpl.this.getLabel(graph, input); } @SuppressWarnings("unchecked") @Override public int category(ReadGraph graph, NodeContext context) throws DatabaseException { T input = (T)context.getConstant(BuiltinKeys.INPUT); return ColumnLabelerContributorImpl.this.getCategory(graph, input); } @SuppressWarnings("unchecked") @Override public Modifier getModifier(ReadGraph graph, UndoContext undoContext, NodeContext context, String columnKey) throws DatabaseException { T input = (T)context.getConstant(BuiltinKeys.INPUT); return ColumnLabelerContributorImpl.this.getModifier(graph, undoContext, input, columnKey); } @Override public String toString() { return ColumnLabelerContributorImpl.this.toString(); } @Override public boolean createToolTip(Object event, NodeContext nodeContext) { T input = (T)context.getConstant(BuiltinKeys.INPUT); return ColumnLabelerContributorImpl.this.shouldCreateToolTip(event, input); } @Override public Object createToolTipContent(Object event, Object parent, NodeContext nodeContext) { T input = (T)context.getConstant(BuiltinKeys.INPUT); return ColumnLabelerContributorImpl.this.createToolTipContentArea(event, parent, input); } }; } }; } @Override public Class getInputClass() { return clazz; } }