Author: kono
Date: 2011-01-28 17:46:05 -0800 (Fri, 28 Jan 2011)
New Revision: 23923
Added:
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassManager.java
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassTask.java
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/EdgeBypassMenuTaskFactory.java
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/NodeBypassMenuTaskFactory.java
Log:
Bypass classes.
Added:
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassManager.java
===================================================================
---
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassManager.java
(rev 0)
+++
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassManager.java
2011-01-29 01:46:05 UTC (rev 23923)
@@ -0,0 +1,95 @@
+package org.cytoscape.view.vizmap.gui.internal.bypass;
+
+import java.util.Collection;
+import java.util.Dictionary;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.service.util.CyServiceRegistrar;
+import org.cytoscape.task.EdgeViewTaskFactory;
+import org.cytoscape.task.NodeViewTaskFactory;
+import org.cytoscape.view.model.VisualLexicon;
+import org.cytoscape.view.model.VisualLexiconNode;
+import org.cytoscape.view.model.VisualProperty;
+import org.cytoscape.view.presentation.RenderingEngineFactory;
+import org.cytoscape.view.presentation.property.TwoDVisualLexicon;
+import org.cytoscape.view.vizmap.gui.SelectedVisualStyleManager;
+import org.cytoscape.view.vizmap.gui.editor.EditorManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BypassManager {
+
+ private static final Logger logger = LoggerFactory
+ .getLogger(BypassManager.class);
+
+ // TODO: how can we display compatible VP only?
+ private static final String DEF_RENDERER = "ding";
+
+ // TODO: this should be a public string or enum managed in swing app.
+ private static final String MENU_KEY = "preferredMenu";
+
+ private static final String PARENT_MENU_ITEM = "Visual Bypass";
+
+ private final CyServiceRegistrar registrar;
+
+ private final EditorManager editorManager;
+
+ private final SelectedVisualStyleManager selectedManager;
+
+ public BypassManager(final CyServiceRegistrar registrar, final
EditorManager editorManager, final SelectedVisualStyleManager selectedManager) {
+ this.registrar = registrar;
+ this.editorManager = editorManager;
+ this.selectedManager = selectedManager;
+ }
+
+ public void addBypass(RenderingEngineFactory<?> factory, Map props) {
+ if (props.containsValue("ding") == false)
+ return;
+
+ final VisualLexicon lexicon = factory.getVisualLexicon();
+
+ final VisualProperty<?> nodeRoot = TwoDVisualLexicon.NODE;
+ final VisualProperty<?> edgeRoot = TwoDVisualLexicon.EDGE;
+
+ // Tree traversal
+ final VisualLexiconNode nodeRootNode = lexicon
+ .getVisualLexiconNode(nodeRoot);
+ final VisualLexiconNode edgeRootNode = lexicon
+ .getVisualLexiconNode(edgeRoot);
+ depthFirst(PARENT_MENU_ITEM, nodeRootNode);
+ depthFirst(PARENT_MENU_ITEM, edgeRootNode);
+ }
+
+ private void depthFirst(String menuText, final VisualLexiconNode node) {
+ final Collection<VisualLexiconNode> children =
node.getChildren();
+ for (VisualLexiconNode child : children) {
+ final VisualProperty<?> vp = child.getVisualProperty();
+ final String newMenu = menuText + "." +
vp.getDisplayName();
+ if (child.getChildren().size() == 0) {
+ // Leaf
+ final Dictionary<String, String> vpProp = new
Hashtable<String, String>();
+ vpProp.put(MENU_KEY, newMenu);
+
+ if
(vp.getTargetDataType().equals(CyNode.class)) {
+ final NodeViewTaskFactory ntf = new
NodeBypassMenuTaskFactory(null, vp,
editorManager.getValueEditor(vp.getRange().getType()), selectedManager);
+ registrar.registerService(ntf,
NodeViewTaskFactory.class, vpProp);
+ } else if
(vp.getTargetDataType().equals(CyEdge.class)) {
+ final EdgeViewTaskFactory etf = new
EdgeBypassMenuTaskFactory();
+ registrar.registerService(etf,
EdgeViewTaskFactory.class, vpProp);
+ }
+ logger.debug("Bypass context menu registered: "
+ vp.getDisplayName());
+ } else {
+ depthFirst(newMenu, child);
+ }
+ }
+ }
+
+ public void removeBypass(RenderingEngineFactory<?> factory, Map props) {
+ // TODO: implement this
+ }
+
+}
Added:
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassTask.java
===================================================================
---
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassTask.java
(rev 0)
+++
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/BypassTask.java
2011-01-29 01:46:05 UTC (rev 23923)
@@ -0,0 +1,66 @@
+package org.cytoscape.view.vizmap.gui.internal.bypass;
+
+import java.awt.Component;
+
+import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyTableEntry;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.View;
+import org.cytoscape.view.model.VisualProperty;
+import org.cytoscape.view.model.events.EdgeViewChangeMicroListener;
+import org.cytoscape.view.model.events.NodeViewChangeMicroListener;
+import org.cytoscape.view.vizmap.gui.SelectedVisualStyleManager;
+import org.cytoscape.view.vizmap.gui.editor.ValueEditor;
+import org.cytoscape.work.AbstractTask;
+import org.cytoscape.work.TaskMonitor;
+
+/**
+ * Task to execute visual style bypass.
+ *
+ * @param <T>
+ */
+public class BypassTask<T extends CyTableEntry> extends AbstractTask {
+
+ // Target view object. Node or Edge.
+ private final View<T> view;
+ private final VisualProperty<Object> vp;
+ private final ValueEditor<Object> editor;
+
+ private final Component parent;
+ private final CyNetworkView networkView;
+
+ private final SelectedVisualStyleManager selectedManager;
+
+ public BypassTask(Component parent, ValueEditor<?> editor,
+ final VisualProperty<?> vp, final View<T> view,
+ final CyNetworkView networkView, final
SelectedVisualStyleManager selectedManager) {
+ this.view = view;
+ this.vp = (VisualProperty<Object>) vp;
+ this.editor = (ValueEditor<Object>) editor;
+ this.parent = parent;
+
+ this.networkView = networkView;
+ this.selectedManager = selectedManager;
+ }
+
+ @Override
+ public void run(TaskMonitor taskMonitor) throws Exception {
+
+ final boolean lock = view.isValueLocked(vp);
+
+ if (!lock) {
+ final Object newValue = editor.showEditor(parent,
+ view.getVisualProperty(vp));
+ view.setLockedValue(vp, newValue);
+ } else {
+ // Unlock it
+ view.clearValueLock(vp);
+ }
+
+ selectedManager.getCurrentVisualStyle().apply(networkView);
+ networkView.updateView();
+ }
+
+}
Added:
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/EdgeBypassMenuTaskFactory.java
===================================================================
---
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/EdgeBypassMenuTaskFactory.java
(rev 0)
+++
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/EdgeBypassMenuTaskFactory.java
2011-01-29 01:46:05 UTC (rev 23923)
@@ -0,0 +1,14 @@
+package org.cytoscape.view.vizmap.gui.internal.bypass;
+
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.task.AbstractEdgeViewTaskFactory;
+import org.cytoscape.work.TaskIterator;
+
+public class EdgeBypassMenuTaskFactory extends AbstractEdgeViewTaskFactory {
+
+ @Override
+ public TaskIterator getTaskIterator() {
+ return null;
+ //return new TaskIterator(new BypassTask<CyEdge>(edgeView));
+ }
+}
Added:
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/NodeBypassMenuTaskFactory.java
===================================================================
---
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/NodeBypassMenuTaskFactory.java
(rev 0)
+++
core3/vizmap-gui-impl/branches/bypass/src/main/java/org/cytoscape/view/vizmap/gui/internal/bypass/NodeBypassMenuTaskFactory.java
2011-01-29 01:46:05 UTC (rev 23923)
@@ -0,0 +1,35 @@
+package org.cytoscape.view.vizmap.gui.internal.bypass;
+
+import java.awt.Component;
+
+import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.task.AbstractNodeViewTaskFactory;
+import org.cytoscape.view.model.VisualProperty;
+import org.cytoscape.view.vizmap.gui.SelectedVisualStyleManager;
+import org.cytoscape.view.vizmap.gui.editor.ValueEditor;
+import org.cytoscape.work.TaskIterator;
+
+public class NodeBypassMenuTaskFactory extends AbstractNodeViewTaskFactory {
+
+ private final VisualProperty<?> vp;
+ private final ValueEditor<?> editor;
+
+ private final Component parent;
+
+ private final SelectedVisualStyleManager selectedManager;
+
+ NodeBypassMenuTaskFactory(final Component parent, final
VisualProperty<?> vp, final ValueEditor<?> editor, final
SelectedVisualStyleManager selectedManager) {
+ this.vp = vp;
+ this.editor = editor;
+
+ this.parent = parent;
+ this.selectedManager = selectedManager;
+ }
+
+ @Override
+ public TaskIterator getTaskIterator() {
+ return new TaskIterator(new BypassTask<CyNode>(parent, editor,
vp, nodeView, netView, selectedManager));
+ }
+
+}
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.