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.