Author: kono
Date: 2012-01-24 14:29:28 -0800 (Tue, 24 Jan 2012)
New Revision: 28093

Modified:
   
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/propertyeditor/AttributeComboBoxPropertyEditor.java
   
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/propertyeditor/CyComboBoxPropertyEditor.java
   
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/event/CellEditorEventHandler.java
   
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/event/VizMapEventHandlerManagerImpl.java
Log:
fixes #618 Unnecessary method call (addPropertyChangeListeners) will be 
filtered.

Modified: 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/propertyeditor/AttributeComboBoxPropertyEditor.java
===================================================================
--- 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/propertyeditor/AttributeComboBoxPropertyEditor.java
    2012-01-24 21:23:20 UTC (rev 28092)
+++ 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/propertyeditor/AttributeComboBoxPropertyEditor.java
    2012-01-24 22:29:28 UTC (rev 28093)
@@ -26,14 +26,13 @@
  * 
  * Export this as an OSGi service!
  */
-public class AttributeComboBoxPropertyEditor extends CyComboBoxPropertyEditor
-               implements ListEditor, SetCurrentNetworkViewListener {
-       
-       private static final Logger logger = LoggerFactory
-                       .getLogger(AttributeComboBoxPropertyEditor.class);
+public class AttributeComboBoxPropertyEditor extends CyComboBoxPropertyEditor 
implements ListEditor,
+               SetCurrentNetworkViewListener {
 
+       private static final Logger logger = 
LoggerFactory.getLogger(AttributeComboBoxPropertyEditor.class);
+
        private final Class<? extends CyTableEntry> type;
-       
+
        private final AttributeSetManager attrManager;
 
        public AttributeComboBoxPropertyEditor(final Class<? extends 
CyTableEntry> type,
@@ -41,16 +40,16 @@
                super();
                this.attrManager = attrManager;
                this.type = type;
-               
+
                final JComboBox comboBox = (JComboBox) editor;
-               comboBox.addActionListener(new ActionListener(){
+               comboBox.addActionListener(new ActionListener() {
 
                        @Override
                        public void actionPerformed(ActionEvent arg0) {
                                updateComboBox(appManager.getCurrentNetwork());
-                       }});
+                       }
+               });
        }
-       
 
        @Override
        public Class<?> getTargetObjectType() {
@@ -61,24 +60,23 @@
                final JComboBox box = (JComboBox) editor;
                final Object selected = box.getSelectedItem();
                box.removeAllItems();
-       
-               if ( currentNetwork != null ) {
+
+               if (currentNetwork != null) {
                        final AttributeSet targetSet = 
this.attrManager.getAttributeSet(currentNetwork, type);
-                       if(targetSet == null)
+                       if (targetSet == null)
                                throw new NullPointerException("AttributeSet is 
null.");
-                       
+
                        final SortedSet<String> sortedName = new 
TreeSet<String>();
                        for (String attrName : targetSet.getAttrMap().keySet())
                                sortedName.add(attrName);
-               
+
                        for (final String attrName : sortedName)
                                box.addItem(attrName);
 
                        // Add new name if not in the list.
                        box.setSelectedItem(selected);
 
-                       logger.debug(type + " attribute Combobox Updated: New 
Names = "
-                                       + targetSet.getAttrMap().keySet());
+                       logger.debug(type + " attribute Combobox Updated: New 
Names = " + targetSet.getAttrMap().keySet());
                }
        }
 
@@ -87,7 +85,7 @@
                SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                                final CyNetworkView networkView = 
e.getNetworkView();
-                               if ( networkView == null ) {
+                               if (networkView == null) {
                                        logger.debug("Current network view 
switched to null");
                                        updateComboBox(null);
                                } else {

Modified: 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/propertyeditor/CyComboBoxPropertyEditor.java
===================================================================
--- 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/propertyeditor/CyComboBoxPropertyEditor.java
   2012-01-24 21:23:20 UTC (rev 28092)
+++ 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/editor/propertyeditor/CyComboBoxPropertyEditor.java
   2012-01-24 22:29:28 UTC (rev 28093)
@@ -22,6 +22,8 @@
 import java.awt.Font;
 import java.awt.event.KeyAdapter;
 import java.awt.event.KeyEvent;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -37,28 +39,27 @@
 import com.l2fprod.common.beans.editor.AbstractPropertyEditor;
 
 /**
- * ComboBoxPropertyEditor. <br>
- * 
+ * Combo box to select discrete values.
+ *
  */
 public class CyComboBoxPropertyEditor extends AbstractPropertyEditor {
 
-       private final static long serialVersionUID = 120233986911049L;
-
-       /*
-        * Color & Font theme
-        */
        private static final Color BACKGROUND = Color.white;
        private static final Color NOT_SELECTED = new Color(51, 51, 255, 150);
        private static final Color SELECTED = Color.red;
        private static final Font SELECTED_FONT = new Font("SansSerif", 
Font.BOLD, 12);
+       
        private Object oldValue;
        private Icon[] icons;
 
-       /**
-        * Creates a new CyComboBoxPropertyEditor object.
-        */
+       // For overriding parent class's PCS.
+       private final PropertyChangeSupport pcs;
+       
        public CyComboBoxPropertyEditor() {
+               pcs = new PropertyChangeSupport(this);
+               
                editor = new JComboBox() {
+                       
                        private final static long serialVersionUID = 
1213748837100875L;
 
                        public void setSelectedItem(Object anObject) {
@@ -68,28 +69,28 @@
                };
 
                final JComboBox combo = (JComboBox) editor;
-
                combo.setRenderer(new Renderer());
-               
                combo.addPopupMenuListener(new PopupMenuListener() {
-                       public void popupMenuCanceled(PopupMenuEvent e) {
-                       }
+                       
+                       @Override
+                       public void popupMenuCanceled(PopupMenuEvent e) {}
 
+                       @Override
                        public void popupMenuWillBecomeInvisible(PopupMenuEvent 
e) {
-
                                try {
                                        if ((combo.getSelectedItem() == null) 
&& (combo.getItemCount() != 0)) {
                                                combo.setSelectedIndex(0);
-                                               
CyComboBoxPropertyEditor.this.firePropertyChange(oldValue, combo.getItemAt(0));
+                                               
firePropertyChangeEvent(oldValue, combo.getItemAt(0));
                                        } else
-                                               
CyComboBoxPropertyEditor.this.firePropertyChange(oldValue, 
combo.getSelectedItem());
+                                               
firePropertyChangeEvent(oldValue, combo.getSelectedItem());
                                } catch (Exception ex) {
                                        ex.printStackTrace();
                                }
                        }
 
-                       public void popupMenuWillBecomeVisible(PopupMenuEvent 
e) {
-                       }
+                       @Override
+                       public void popupMenuWillBecomeVisible(PopupMenuEvent 
e) {}
+               
                });
                
                combo.addKeyListener(new KeyAdapter() {
@@ -100,28 +101,42 @@
                });
                combo.setSelectedIndex(-1);
        }
+       
+       private void firePropertyChangeEvent(Object oldValue, Object newValue) {
+               this.firePropertyChange(oldValue, newValue);
+       }
+       
+       @Override
+       public void addPropertyChangeListener(PropertyChangeListener listener) 
{                
+               // Ignore duplicate method calls.
+               for(PropertyChangeListener l: pcs.getPropertyChangeListeners()) 
{
+                       if(l == listener)
+                               return;
+               }
+               pcs.addPropertyChangeListener(listener);
+       }
 
-       /**
-        * DOCUMENT ME!
-        * 
-        * @return DOCUMENT ME!
-        */
+       @Override
+       public void removePropertyChangeListener(PropertyChangeListener 
listener) {
+               pcs.removePropertyChangeListener(listener);
+       }
+
+       @Override
+       protected void firePropertyChange(Object oldValue, Object newValue) {
+               pcs.firePropertyChange("value", oldValue, newValue);
+       }
+
+       @Override
        public Object getValue() {
                Object selected = ((JComboBox) editor).getSelectedItem();
 
                if (selected instanceof Value)
                        return ((Value) selected).value;
                else
-
                        return selected;
        }
 
-       /**
-        * DOCUMENT ME!
-        * 
-        * @param value
-        *            DOCUMENT ME!
-        */
+       @Override
        public void setValue(Object value) {
                JComboBox combo = (JComboBox) editor;
                Object current = null;
@@ -130,10 +145,8 @@
                for (int i = 0, c = combo.getModel().getSize(); i < c; i++) {
                        current = combo.getModel().getElementAt(i);
 
-                       if ((value == current)
-                                       || ((current != null) && 
current.equals(value))) {
+                       if ((value == current) || ((current != null) && 
current.equals(value))) {
                                index = i;
-
                                break;
                        }
                }
@@ -141,18 +154,12 @@
                ((JComboBox) editor).setSelectedIndex(index);
        }
 
-       /**
-        * DOCUMENT ME!
-        * 
-        * @param values
-        *            DOCUMENT ME!
-        */
-       public void setAvailableValues(Object[] values) {
+
+       public void setAvailableValues(final Object[] values) {
                ((JComboBox) editor).setModel(new DefaultComboBoxModel(values));
 
-               if (((JComboBox) editor).getItemCount() != 0) {
+               if (((JComboBox) editor).getItemCount() != 0)
                        ((JComboBox) editor).setSelectedIndex(0);
-               }
        }
        
        public Set<Object> getAvailableValues() {
@@ -164,17 +171,12 @@
                return items;
        }
 
-       /**
-        * DOCUMENT ME!
-        * 
-        * @param icons
-        *            DOCUMENT ME!
-        */
+       
        public void setAvailableIcons(Icon[] icons) {
                this.icons = icons;
        }
 
-       public class Renderer extends DefaultListCellRenderer {
+       private final class Renderer extends DefaultListCellRenderer {
                private final static long serialVersionUID = 1213748837110925L;
 
                public Component getListCellRendererComponent(JList list, 
Object value,

Modified: 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/event/CellEditorEventHandler.java
===================================================================
--- 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/event/CellEditorEventHandler.java
     2012-01-24 21:23:20 UTC (rev 28092)
+++ 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/event/CellEditorEventHandler.java
     2012-01-24 22:29:28 UTC (rev 28093)
@@ -207,6 +207,7 @@
 
                        logger.debug("New Type = " + type.getDisplayName());
                        logger.debug("New Attr Name = " + controllingAttrName);
+                       
                        switchMappingType(prop, type, 
(VisualMappingFunctionFactory) e.getNewValue(),
                                        controllingAttrName.toString());
                } else if (prop.getParentProperty() != null) {
@@ -344,11 +345,22 @@
                logger.debug("!! Current Mapping type: " + currentMapping);
                
                if(currentMapping == null || currentMapping.getClass() != 
factory.getMappingFunctionType()) {
-                       // Mapping does not exist.  Need to create new one.
-                       final AttributeSet attrSet = 
attrManager.getAttributeSet(applicationManager.getCurrentNetwork(), (Class<? 
extends CyTableEntry>) vp.getTargetDataType());
+                       
+                       // Mapping does not exist. Need to create new one.
+                       final AttributeSet attrSet = 
attrManager.getAttributeSet(applicationManager.getCurrentNetwork(),
+                                       (Class<? extends CyTableEntry>) 
vp.getTargetDataType());
                        final Class<?> attributeDataType = 
attrSet.getAttrMap().get(controllingAttrName);
+
+                       if (factory.getMappingFunctionType() == 
ContinuousMapping.class) {
+                               if 
(Number.class.isAssignableFrom(attributeDataType) == false) {
+                                       JOptionPane.showMessageDialog(null,
+                                                       "Selected column data 
type is not Number.\nPlease select numerical attributes.",
+                                                       "Incompatible Column 
Type!", JOptionPane.INFORMATION_MESSAGE);
+                                       return;
+                               }
+                       }
+                       
                        newMapping = 
factory.createVisualMappingFunction(controllingAttrName, attributeDataType, 
null,vp);
-       
                        style.addVisualMappingFunction(newMapping);
                } else
                        newMapping = currentMapping;

Modified: 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/event/VizMapEventHandlerManagerImpl.java
===================================================================
--- 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/event/VizMapEventHandlerManagerImpl.java
      2012-01-24 21:23:20 UTC (rev 28092)
+++ 
core3/impl/trunk/vizmap-gui-impl/src/main/java/org/cytoscape/view/vizmap/gui/internal/event/VizMapEventHandlerManagerImpl.java
      2012-01-24 22:29:28 UTC (rev 28093)
@@ -2,6 +2,7 @@
 
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
 import java.beans.PropertyEditor;
 import java.util.HashMap;
 import java.util.Map;
@@ -22,12 +23,10 @@
 
 import com.l2fprod.common.propertysheet.PropertySheetPanel;
 
-public class VizMapEventHandlerManagerImpl implements
-               VizMapEventHandlerManager, PropertyChangeListener {
+public class VizMapEventHandlerManagerImpl implements 
VizMapEventHandlerManager, PropertyChangeListener {
 
-       private static final Logger logger = LoggerFactory
-                       .getLogger(VizMapEventHandlerManagerImpl.class);
-       
+       private static final Logger logger = 
LoggerFactory.getLogger(VizMapEventHandlerManagerImpl.class);
+
        // This event is used in PropertyEditor object.
        private static final String VALUE = "VALUE";
 
@@ -36,21 +35,23 @@
        private final EditorManager editorManager;
 
        private final SelectedVisualStyleManager manager;
-       
+
        private VizMapPropertySheetBuilder vizMapPropertySheetBuilder;
-       
+
        private final CyNetworkTableManager tableMgr;
        private final CyApplicationManager applicationManager;
-       
+
        private final AttributeSetManager attrManager;
-       
+
        private final VizMapperUtil util;
+       
+       private PropertyChangeSupport mappingTypePCS;
 
        public VizMapEventHandlerManagerImpl(final SelectedVisualStyleManager 
manager, final EditorManager editorManager,
-                                            final VizMapPropertySheetBuilder 
vizMapPropertySheetBuilder,
-                                            final PropertySheetPanel 
propertySheetPanel, final VizMapperMainPanel gui,
-                                            final CyNetworkTableManager 
tableMgr, final CyApplicationManager applicationManager, final 
AttributeSetManager attrManager,  final VizMapperUtil util)
-       {
+                       final VizMapPropertySheetBuilder 
vizMapPropertySheetBuilder, final PropertySheetPanel propertySheetPanel,
+                       final VizMapperMainPanel gui, final 
CyNetworkTableManager tableMgr,
+                       final CyApplicationManager applicationManager, final 
AttributeSetManager attrManager,
+                       final VizMapperUtil util) {
                this.vizMapPropertySheetBuilder = vizMapPropertySheetBuilder;
                this.editorManager = editorManager;
                this.tableMgr = tableMgr;
@@ -58,26 +59,23 @@
                this.manager = manager;
                this.attrManager = attrManager;
                this.util = util;
-               
+
                registerCellEditorListeners();
 
                eventHandlers = new HashMap<String, VizMapEventHandler>();
                createHandlers(propertySheetPanel);
-               
-               
        }
 
        private void createHandlers(PropertySheetPanel propertySheetPanel) {
                AbstractVizMapEventHandler windowEventHandler = new 
EditorWindowEventHandler();
-               
+
                // FIXME
                eventHandlers.put(EditorManager.EDITOR_WINDOW_CLOSED, 
windowEventHandler);
                eventHandlers.put(EditorManager.EDITOR_WINDOW_OPENED, 
windowEventHandler);
-               
-               // Create handler for local property editor event.
-               eventHandlers.put(VALUE, new CellEditorEventHandler(manager,
-                               propertySheetPanel, tableMgr, 
applicationManager, vizMapPropertySheetBuilder, attrManager, util));
 
+               // Create handler for local property editor event.
+               eventHandlers.put(VALUE, new CellEditorEventHandler(manager, 
propertySheetPanel, tableMgr, applicationManager,
+                               vizMapPropertySheetBuilder, attrManager, util));
        }
 
        /*
@@ -85,54 +83,44 @@
         */
        private void registerCellEditorListeners() {
                // FIXME
-               for (PropertyEditor p : editorManager.getCellEditors()) {
+               for (PropertyEditor p : editorManager.getCellEditors())
                        p.addPropertyChangeListener(this);
-               }
-               
-               logger.debug("********** Editor registered: " + 
editorManager.getCellEditors().size());
 
-               for (PropertyEditor p : editorManager.getAttributeSelectors()) {
+               logger.debug("New Cell Editor registered: " + 
editorManager.getCellEditors().size());
+
+               for (final PropertyEditor p : 
editorManager.getAttributeSelectors())
                        p.addPropertyChangeListener(this);
-               }
-               
-               // Add Mapping type editor
+
+               // Add Mapping type editor: continuous, discrete, or 
passthrough.
                final PropertyEditor mappingSelector = 
editorManager.getMappingFunctionSelector();
                mappingSelector.addPropertyChangeListener(this);
-
        }
-       
-       
+
        // Called through OSGi service listener mechanism.
        public void registerPCL(RenderingEngineFactory<?> factory, Map props) {
                registerCellEditorListeners();
        }
-       
+
        public void unregisterPCL(RenderingEngineFactory<?> factory, Map props) 
{
                // TODO implement this
        }
-       
 
-       public VizMapEventHandler getHandler(String name) {
+       
+       @Override
+       public VizMapEventHandler getHandler(final String name) {
                return eventHandlers.get(name);
        }
 
        @Override
-       public void propertyChange(PropertyChangeEvent e) {
-               
-               logger.debug("###################### VizMap local property 
change event called: "
-                               + e.getPropertyName());
-
+       public void propertyChange(final PropertyChangeEvent e) {
+               // Check caller
                final String handlerKey = e.getPropertyName();
 
-               // Do nothing if null.
+               // Do nothing if key is null.
                if (handlerKey == null)
                        return;
 
                final VizMapEventHandler handler = 
getHandler(handlerKey.toUpperCase());
-
-               logger.debug("###################### Got handler: " + handler
-                               + ", Source = " + e.getSource());
-
                if (handler != null)
                        handler.processEvent(e);
        }

-- 
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