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.

Reply via email to