Author: mes
Date: 2012-03-15 14:13:00 -0700 (Thu, 15 Mar 2012)
New Revision: 28556
Added:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/dummies/
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/dummies/DummyNetwork.java
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/dummies/DummyNetworkView.java
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/dummies/DummyTable.java
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/ArgHandler.java
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/ArgHandlerFactory.java
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/ArgRecorder.java
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/BasicArgHandler.java
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/BasicArgHandlerFactory.java
Modified:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/CyActivator.java
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/CommandListAction.java
Log:
added support for listing tunable arg types in command list
Modified:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/CyActivator.java
===================================================================
---
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/CyActivator.java
2012-03-15 21:11:21 UTC (rev 28555)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/CyActivator.java
2012-03-15 21:13:00 UTC (rev 28556)
@@ -48,6 +48,9 @@
import java.util.Properties;
import org.cytoscape.internal.actions.CommandListAction;
+import org.cytoscape.internal.commands.ArgRecorder;
+import org.cytoscape.internal.commands.ArgHandlerFactory;
+import org.cytoscape.internal.commands.BasicArgHandlerFactory;
import org.cytoscape.application.CyApplicationConfiguration;
import org.cytoscape.application.CyApplicationManager;
import org.cytoscape.application.CyShutdown;
@@ -395,7 +398,13 @@
registerServiceListener(bc, layoutMenuPopulator, "addLayout",
"removeLayout",
CyLayoutAlgorithm.class);
- CommandListAction cla = new CommandListAction(cytoscapeDesktop);
+
+ BasicArgHandlerFactory argHandlerFactory = new
BasicArgHandlerFactory();
+
registerService(bc,argHandlerFactory,ArgHandlerFactory.class,new Properties());
+
+ ArgRecorder argRec = new ArgRecorder();
+
registerServiceListener(bc,argRec,"addTunableHandlerFactory","removeTunableHandlerFactory",ArgHandlerFactory.class);
+ CommandListAction cla = new CommandListAction(cytoscapeDesktop,argRec);
registerService(bc,cla,CyAction.class,new Properties());
registerServiceListener(bc,cla,"addTaskFactory","removeTaskFactory",TaskFactory.class);
registerServiceListener(bc,cla,"addNetworkTaskFactory","removeNetworkTaskFactory",NetworkTaskFactory.class);
Modified:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/CommandListAction.java
===================================================================
---
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/CommandListAction.java
2012-03-15 21:11:21 UTC (rev 28555)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/CommandListAction.java
2012-03-15 21:13:00 UTC (rev 28556)
@@ -45,27 +45,39 @@
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
+import org.cytoscape.internal.actions.dummies.*;
import org.cytoscape.application.swing.AbstractCyAction;
import org.cytoscape.application.swing.CySwingApplication;
import org.cytoscape.application.swing.CyAction;
import org.cytoscape.work.TaskFactory;
+import org.cytoscape.work.TaskIterator;
import org.cytoscape.task.NetworkTaskFactory;
import org.cytoscape.task.NetworkViewTaskFactory;
import org.cytoscape.task.TableTaskFactory;
+import org.cytoscape.internal.commands.ArgRecorder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
/**
*
*/
public class CommandListAction extends AbstractCyAction {
+ private final static Logger logger =
LoggerFactory.getLogger(CommandListAction.class);
+
private final Map<TaskFactory,String> commands;
+ private final Map<String,String> argStrings;
private final CySwingApplication swingApp;
+ private final ArgRecorder argRec;
- public CommandListAction(CySwingApplication swingApp) {
+ public CommandListAction(CySwingApplication swingApp, ArgRecorder
argRec) {
super("List All Commands...");
setPreferredMenu("Tools");
this.swingApp = swingApp;
+ this.argRec = argRec;
this.commands = new HashMap<TaskFactory,String>();
+ this.argStrings = new HashMap<String,String>();
}
public void actionPerformed(ActionEvent ae) {
@@ -76,6 +88,8 @@
StringBuilder sb = new StringBuilder();
for ( String comm : commandList ) {
sb.append(comm);
+ sb.append(" ");
+ sb.append(argStrings.get(comm));
sb.append(System.getProperty("line.separator"));
}
JOptionPane.showMessageDialog(swingApp.getJFrame(), sb.toString());
@@ -83,10 +97,21 @@
});
}
- public void addTaskFactory(TaskFactory tf, Map props) {
addCommand(tf,props); }
- public void addNetworkTaskFactory(NetworkTaskFactory tf, Map props) {
addCommand(tf,props); }
- public void addNetworkViewTaskFactory(NetworkViewTaskFactory tf, Map
props) { addCommand(tf,props); }
- public void addTableTaskFactory(TableTaskFactory tf, Map props) {
addCommand(tf,props); }
+ public void addTaskFactory(TaskFactory tf, Map props) {
+ addCommand(tf,props);
+ }
+ public void addNetworkTaskFactory(NetworkTaskFactory tf, Map props) {
+ tf.setNetwork( new DummyNetwork() );
+ addCommand(tf,props);
+ }
+ public void addNetworkViewTaskFactory(NetworkViewTaskFactory tf, Map
props) {
+ tf.setNetworkView( new DummyNetworkView() );
+ addCommand(tf,props);
+ }
+ public void addTableTaskFactory(TableTaskFactory tf, Map props) {
+ tf.setTable( new DummyTable() );
+ addCommand(tf,props);
+ }
public void removeTaskFactory(TaskFactory tf, Map props) {
removeCommand(tf,props); }
public void removeNetworkTaskFactory(NetworkTaskFactory tf, Map props)
{ removeCommand(tf,props); }
@@ -95,14 +120,19 @@
private void addCommand(TaskFactory tf, Map properties) {
String invocation = getInvocation(properties);
- if (invocation != null)
+ if (invocation != null) {
commands.put(tf, invocation);
+ String args = getArgs(tf);
+ argStrings.put(invocation,args);
+ }
}
private void removeCommand(TaskFactory tf, Map properties) {
String invocation = getInvocation(properties);
- if (invocation != null)
+ if (invocation != null) {
commands.remove(tf);
+ argStrings.remove(invocation);
+ }
}
private String getInvocation(Map properties) {
@@ -114,4 +144,25 @@
return commandNamespace + " " + command;
}
+
+ private String getArgs(TaskFactory tf) {
+ try {
+ TaskIterator ti = tf.createTaskIterator();
+ List<String> args = new ArrayList<String>();
+
+ while ( ti.hasNext() )
+ args.addAll( argRec.findArgs( ti.next() ) );
+
+ StringBuilder sb = new StringBuilder();
+ for ( String s : args ) {
+ sb.append(s);
+ sb.append(" ");
+ }
+
+ return sb.toString();
+ } catch (Exception e) {
+ logger.debug("Could not create invocation string for
command.",e);
+ return "<unknown args>";
+ }
+ }
}
Added:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/dummies/DummyNetwork.java
===================================================================
---
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/dummies/DummyNetwork.java
(rev 0)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/dummies/DummyNetwork.java
2012-03-15 21:13:00 UTC (rev 28556)
@@ -0,0 +1,32 @@
+
+package org.cytoscape.internal.actions.dummies;
+
+import org.cytoscape.model.*;
+import java.util.Collection;
+import java.util.List;
+
+public class DummyNetwork implements CyNetwork {
+ public Long getSUID() { return null; }
+ public CyNode addNode() {return null;}
+ public boolean removeNodes(Collection<CyNode> node) {return false;}
+ public CyEdge addEdge(CyNode source, CyNode target, boolean isDirected)
{return null;}
+ public boolean removeEdges(Collection<CyEdge> edges) {return false;}
+ public int getNodeCount() {return 0;}
+ public int getEdgeCount() {return 0;}
+ public List<CyNode> getNodeList() {return null;}
+ public List<CyEdge> getEdgeList() {return null;}
+ public boolean containsNode(CyNode node) {return false;}
+ public boolean containsEdge(CyEdge edge) {return false;}
+ public boolean containsEdge(CyNode from, CyNode to) {return false;}
+ public CyNode getNode(int index) {return null;}
+ public CyEdge getEdge(int index) {return null;}
+ public List<CyNode> getNeighborList(CyNode node, CyEdge.Type edgeType)
{return null;}
+ public List<CyEdge> getAdjacentEdgeList(CyNode node, CyEdge.Type
edgeType) {return null;}
+ public Iterable<CyEdge> getAdjacentEdgeIterable(CyNode node,
CyEdge.Type edgeType) {return null;}
+ public List<CyEdge> getConnectingEdgeList(CyNode source, CyNode target,
CyEdge.Type edgeType) {return null;}
+ public CyTable getDefaultNetworkTable() {return null;}
+ public CyTable getDefaultNodeTable() {return null;}
+ public CyTable getDefaultEdgeTable() {return null;}
+ public CyRow getRow(CyTableEntry entry, String tableName) {return null;}
+ public CyRow getRow(CyTableEntry entry) {return null;}
+}
Added:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/dummies/DummyNetworkView.java
===================================================================
---
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/dummies/DummyNetworkView.java
(rev 0)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/dummies/DummyNetworkView.java
2012-03-15 21:13:00 UTC (rev 28556)
@@ -0,0 +1,28 @@
+
+package org.cytoscape.internal.actions.dummies;
+
+import org.cytoscape.view.model.*;
+import org.cytoscape.model.*;
+import java.util.Collection;
+import java.util.List;
+
+
+public class DummyNetworkView implements CyNetworkView {
+
+ public View<CyNode> getNodeView(final CyNode node) {return null;}
+ public Collection<View<CyNode>> getNodeViews() {return null;}
+ public View<CyEdge> getEdgeView(final CyEdge edge) {return null;}
+ public Collection<View<CyEdge>> getEdgeViews() {return null;}
+ public Collection<View<? extends CyTableEntry>> getAllViews() {return
null;}
+ public void fitContent() {}
+ public void fitSelected() {}
+ public void updateView() {}
+ public <T, V extends T> void setViewDefault(final VisualProperty<?
extends T> vp, final V defaultValue) {}
+ public <T, V extends T> void setVisualProperty(VisualProperty<? extends
T> vp, V value) {}
+ public <T> T getVisualProperty(VisualProperty<T> vp) { return null; }
+ public <T, V extends T> void setLockedValue(VisualProperty<? extends T>
vp, V value) {}
+ public boolean isValueLocked(VisualProperty<?> vp) { return false; }
+ public void clearValueLock(VisualProperty<?> vp) {}
+ public CyNetwork getModel() { return null;}
+ public Long getSUID() { return null;}
+}
Added:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/dummies/DummyTable.java
===================================================================
---
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/dummies/DummyTable.java
(rev 0)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/actions/dummies/DummyTable.java
2012-03-15 21:13:00 UTC (rev 28556)
@@ -0,0 +1,36 @@
+
+package org.cytoscape.internal.actions.dummies;
+
+import org.cytoscape.model.*;
+import static org.cytoscape.model.CyTable.* ;
+import java.util.Collection;
+import java.util.List;
+
+public class DummyTable implements CyTable {
+
+ public Long getSUID() { return null; }
+ public boolean isPublic() { return false; }
+ public Mutability getMutability() { return null; }
+ public String getTitle() { return null; }
+ public void setTitle(String title) {}
+ public CyColumn getPrimaryKey() { return null; }
+ public CyColumn getColumn(String columnName) { return null; }
+ public Collection<CyColumn> getColumns() { return null; }
+ public void deleteColumn(String columnName) {}
+ public <T> void createColumn(String columnName, Class<?extends T> type,
boolean isImmutable) {}
+ public <T> void createColumn(String columnName, Class<?extends T> type,
boolean isImmutable, T defaultValue) {}
+ public <T> void createListColumn(String columnName, Class<T>
listElementType, boolean isImmutable) {}
+ public <T> void createListColumn(String columnName, Class<T>
listElementType, boolean isImmutable, List<T> defaultValue ) {}
+ public CyRow getRow(Object primaryKey) { return null; }
+ public boolean rowExists(Object primaryKey) { return false; }
+ public List<CyRow> getAllRows() { return null; }
+ public String getLastInternalError() { return null; }
+ public Collection<CyRow> getMatchingRows(String columnName, Object
value) { return null; }
+ public int countMatchingRows(String columnName, Object value) { return
0; }
+ public int getRowCount() { return 0; }
+ public String addVirtualColumn(String virtualColumn, String
sourceColumn, CyTable sourceTable, String targetJoinKey, boolean isImmutable) {
return null; }
+ public void addVirtualColumns(CyTable sourceTable, String
targetJoinKey, boolean isImmutable) {}
+ public SavePolicy getSavePolicy() { return null; }
+ public void setSavePolicy(SavePolicy policy) {}
+ public void swap(CyTable otherTable) {}
+}
Added:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/ArgHandler.java
===================================================================
---
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/ArgHandler.java
(rev 0)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/ArgHandler.java
2012-03-15 21:13:00 UTC (rev 28556)
@@ -0,0 +1,11 @@
+package org.cytoscape.internal.commands;
+
+
+import java.util.Properties;
+
+import org.cytoscape.work.TunableHandler;
+
+
+public interface ArgHandler extends TunableHandler {
+ String getDesc();
+}
Added:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/ArgHandlerFactory.java
===================================================================
---
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/ArgHandlerFactory.java
(rev 0)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/ArgHandlerFactory.java
2012-03-15 21:13:00 UTC (rev 28556)
@@ -0,0 +1,15 @@
+package org.cytoscape.internal.commands;
+
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.io.File;
+import java.net.URL;
+
+import org.cytoscape.work.Tunable;
+import org.cytoscape.work.TunableHandlerFactory;
+import org.cytoscape.work.util.*;
+
+
+public interface ArgHandlerFactory extends TunableHandlerFactory<ArgHandler> {
+}
Added:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/ArgRecorder.java
===================================================================
---
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/ArgRecorder.java
(rev 0)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/ArgRecorder.java
2012-03-15 21:13:00 UTC (rev 28556)
@@ -0,0 +1,31 @@
+package org.cytoscape.internal.commands;
+
+import java.util.*;
+
+import javax.swing.JPanel;
+
+import org.cytoscape.work.AbstractTunableInterceptor;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ArgRecorder extends AbstractTunableInterceptor<ArgHandler> {
+
+ private static final Logger logger =
LoggerFactory.getLogger(ArgRecorder.class);
+
+ public List<String> findArgs(Object o) {
+ List<String> desc = new ArrayList<String>();
+ Map<String,ArgHandler> handlers = getHandlers(o);
+ for (final ArgHandler p : handlers.values())
+ desc.add( p.getDesc() );
+ return desc;
+ }
+
+ public void addTunableHandlerFactory(ArgHandlerFactory f, Map p) {
+ super.addTunableHandlerFactory(f,p);
+ }
+ public void removeTunableHandlerFactory(ArgHandlerFactory f, Map p) {
+ super.removeTunableHandlerFactory(f,p);
+ }
+
+}
Added:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/BasicArgHandler.java
===================================================================
---
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/BasicArgHandler.java
(rev 0)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/BasicArgHandler.java
2012-03-15 21:13:00 UTC (rev 28556)
@@ -0,0 +1,29 @@
+package org.cytoscape.internal.commands;
+
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+import org.cytoscape.work.AbstractTunableHandler;
+import org.cytoscape.work.Tunable;
+
+
+public class BasicArgHandler extends AbstractTunableHandler implements
ArgHandler {
+
+ public BasicArgHandler(final Field field, final Object instance, final
Tunable tunable) {
+ super(field, instance, tunable);
+ }
+
+ public BasicArgHandler(final Method getter, final Method setter, final
Object instance, final Tunable tunable) {
+ super(getter, setter, instance, tunable);
+ }
+
+ public void handle() {
+ }
+
+ public String getDesc() {
+ String name = getName();
+ String type = getType().getSimpleName();
+ return name + "=<" + type + ">";
+ }
+}
Added:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/BasicArgHandlerFactory.java
===================================================================
---
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/BasicArgHandlerFactory.java
(rev 0)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/commands/BasicArgHandlerFactory.java
2012-03-15 21:13:00 UTC (rev 28556)
@@ -0,0 +1,22 @@
+package org.cytoscape.internal.commands;
+
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.io.File;
+import java.net.URL;
+
+import org.cytoscape.work.Tunable;
+import org.cytoscape.work.TunableHandlerFactory;
+import org.cytoscape.work.util.*;
+
+
+public class BasicArgHandlerFactory implements ArgHandlerFactory {
+ public ArgHandler createTunableHandler(final Field field, final Object
instance, final Tunable tunable) {
+ return new BasicArgHandler(field, instance, tunable);
+ }
+
+ public ArgHandler createTunableHandler(final Method getter, final
Method setter, final Object instance, final Tunable tunable) {
+ return new BasicArgHandler(getter, setter, instance, tunable);
+ }
+}
--
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.