Author: pwang
Date: 2012-08-02 16:48:03 -0700 (Thu, 02 Aug 2012)
New Revision: 30080
Modified:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
Log:
Sort menu items based on gravity
Modified:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
===================================================================
---
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
2012-08-02 23:42:10 UTC (rev 30079)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
2012-08-02 23:48:03 UTC (rev 30080)
@@ -96,6 +96,7 @@
import org.cytoscape.view.model.events.NetworkViewAboutToBeDestroyedListener;
import org.cytoscape.view.model.events.NetworkViewAddedEvent;
import org.cytoscape.view.model.events.NetworkViewAddedListener;
+import org.cytoscape.work.ServiceProperties;
import org.cytoscape.work.TaskFactory;
import org.cytoscape.work.swing.DialogTaskManager;
import org.slf4j.Logger;
@@ -134,6 +135,8 @@
private final Map<Long, NetworkTreeNode> treeNodeMap;
private final Map<Object, TaskFactory> provisionerMap;
+
+ private HashMap<JMenuItem, Double> actionGravityMap;
private final Map<CyNetwork, NetworkTreeNode> network2nodeMap;
@@ -168,6 +171,8 @@
treeTable = new JTreeTable(treeTableModel);
initialize();
+ this.actionGravityMap = new HashMap<JMenuItem, Double>();
+
// create and populate the popup window
popup = new JPopupMenu();
popupMap = new WeakHashMap<TaskFactory, JMenuItem>();
@@ -245,12 +250,34 @@
action = new TaskFactoryTunableAction(taskMgr, factory,
props);
final JMenuItem item = new JMenuItem(action);
+
+ Double gravity = 10.0;
+ if (props.containsKey(ServiceProperties.MENU_GRAVITY)){
+ gravity =
Double.valueOf(props.get(ServiceProperties.MENU_GRAVITY).toString());
+ }
+
+ this.actionGravityMap.put(item, gravity);
+
popupMap.put(factory, item);
popupActions.put(factory, action);
- popup.add(item);
+ int menuIndex = getMenuIndexByGravity(item);
+ popup.insert(item, menuIndex);
popup.addPopupMenuListener(action);
}
+ private int getMenuIndexByGravity(JMenuItem item) {
+ Double gravity = this.actionGravityMap.get(item);
+ Double gravityX;
+ for (int i=0; i < popup.getComponentCount(); i++ ){
+ gravityX =
this.actionGravityMap.get(popup.getComponent(i));
+ if (gravity < gravityX){
+ return i;
+ }
+ }
+
+ return popup.getComponentCount();
+ }
+
private void removeFactory(TaskFactory factory) {
JMenuItem item = popupMap.remove(factory);
if (item != null)
--
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.