Author: kono
Date: 2010-11-02 15:35:39 -0700 (Tue, 02 Nov 2010)
New Revision: 22693
Modified:
cytoscape/trunk/application/src/main/java/cytoscape/visual/AppearanceCalculator.java
cytoscape/trunk/application/src/main/java/cytoscape/visual/CalculatorIO.java
cytoscape/trunk/application/src/main/java/cytoscape/visual/EdgeAppearanceCalculator.java
cytoscape/trunk/application/src/main/java/cytoscape/visual/NodeAppearanceCalculator.java
cytoscape/trunk/application/src/main/java/cytoscape/visual/VisualStyle.java
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/AbstractMapping.java
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/ContinuousMapping.java
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/continuous/ContinuousMappingPoint.java
cytoscape/trunk/application/src/main/java/cytoscape/visual/ui/VizMapperMainPanel.java
Log:
Bug ID 0002407: "VizMapper does not save visual styles" fixed. When
VisualStyle's clone() method is called, all calculators will be named correctly
and it will not create duplicate names.
Modified:
cytoscape/trunk/application/src/main/java/cytoscape/visual/AppearanceCalculator.java
===================================================================
---
cytoscape/trunk/application/src/main/java/cytoscape/visual/AppearanceCalculator.java
2010-11-02 21:48:29 UTC (rev 22692)
+++
cytoscape/trunk/application/src/main/java/cytoscape/visual/AppearanceCalculator.java
2010-11-02 22:35:39 UTC (rev 22693)
@@ -36,7 +36,9 @@
*/
package cytoscape.visual;
+import cytoscape.visual.calculators.BasicCalculator;
import cytoscape.visual.calculators.Calculator;
+import cytoscape.visual.mappings.ObjectMapping;
import cytoscape.logger.CyLogger;
import java.util.ArrayList;
@@ -49,8 +51,13 @@
* a (possibly null) calculator for each visual attribute.
*/
abstract class AppearanceCalculator implements Cloneable {
- protected List<Calculator> calcs = new ArrayList<Calculator>();
+
+ protected static final String CLONE_SUFFIX = "-clone-";
+
+ protected final List<Calculator> calcs = new ArrayList<Calculator>();
+
protected Appearance tmpDefaultAppearance;
+
protected VisualPropertyDependency deps;
/**
@@ -240,4 +247,20 @@
}
protected abstract void copyDefaultAppearance(AppearanceCalculator
toCopy);
+
+ protected void copyCalculators(AppearanceCalculator copy) {
+ // Copy individual calculators
+ for(Calculator cal : this.calcs) {
+ final ObjectMapping mCopy = (ObjectMapping)
cal.getMapping(0).clone();
+ final String originalName = cal.toString();
+ String copyName;
+ if(originalName.contains(CLONE_SUFFIX))
+ copyName = originalName.split(CLONE_SUFFIX)[0] +
CLONE_SUFFIX + System.currentTimeMillis();
+ else
+ copyName = originalName + CLONE_SUFFIX +
System.currentTimeMillis();
+
+ final Calculator bCalc = new BasicCalculator(copyName, mCopy,
cal.getVisualPropertyType());
+ copy.setCalculator(bCalc);
+ }
+ }
}
Modified:
cytoscape/trunk/application/src/main/java/cytoscape/visual/CalculatorIO.java
===================================================================
---
cytoscape/trunk/application/src/main/java/cytoscape/visual/CalculatorIO.java
2010-11-02 21:48:29 UTC (rev 22692)
+++
cytoscape/trunk/application/src/main/java/cytoscape/visual/CalculatorIO.java
2010-11-02 22:35:39 UTC (rev 22693)
@@ -39,7 +39,6 @@
package cytoscape.visual;
-//----------------------------------------------------------------------------
import static cytoscape.visual.VisualPropertyType.EDGE_LINETYPE;
import static cytoscape.visual.VisualPropertyType.EDGE_LINE_STYLE;
import static cytoscape.visual.VisualPropertyType.EDGE_LINE_WIDTH;
@@ -58,10 +57,6 @@
import static cytoscape.visual.VisualPropertyType.NODE_SIZE;
import static cytoscape.visual.VisualPropertyType.NODE_WIDTH;
-import cytoscape.visual.calculators.Calculator;
-import cytoscape.visual.calculators.CalculatorFactory;
-import cytoscape.logger.CyLogger;
-
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -69,20 +64,20 @@
import java.io.IOException;
import java.io.StringReader;
import java.io.Writer;
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
-import java.util.Map.Entry;
+import cytoscape.logger.CyLogger;
+import cytoscape.visual.calculators.Calculator;
+import cytoscape.visual.calculators.CalculatorFactory;
-//----------------------------------------------------------------------------
+
/**
* This class defines static methods for reading calculator definitions from a
* properties object and installing them into a CalculatorCatalog, and for
Modified:
cytoscape/trunk/application/src/main/java/cytoscape/visual/EdgeAppearanceCalculator.java
===================================================================
---
cytoscape/trunk/application/src/main/java/cytoscape/visual/EdgeAppearanceCalculator.java
2010-11-02 21:48:29 UTC (rev 22692)
+++
cytoscape/trunk/application/src/main/java/cytoscape/visual/EdgeAppearanceCalculator.java
2010-11-02 22:35:39 UTC (rev 22693)
@@ -100,15 +100,8 @@
}
copy.setDefaultAppearance(defAppr);
+ copyCalculators(copy);
- //Copy mappings
- for (Calculator cal : this.calcs) {
- final ObjectMapping mCopy = (ObjectMapping)
cal.getMapping(0).clone();
- BasicCalculator bCalc = new
BasicCalculator(cal.toString(), mCopy,
-
cal.getVisualPropertyType());
- copy.setCalculator(bCalc);
- }
-
return copy;
}
Modified:
cytoscape/trunk/application/src/main/java/cytoscape/visual/NodeAppearanceCalculator.java
===================================================================
---
cytoscape/trunk/application/src/main/java/cytoscape/visual/NodeAppearanceCalculator.java
2010-11-02 21:48:29 UTC (rev 22692)
+++
cytoscape/trunk/application/src/main/java/cytoscape/visual/NodeAppearanceCalculator.java
2010-11-02 22:35:39 UTC (rev 22693)
@@ -52,6 +52,7 @@
* a (possibly null) calculator for each visual attribute.
*/
public class NodeAppearanceCalculator extends AppearanceCalculator {
+
private NodeAppearance defaultAppearance = new NodeAppearance();
/**
@@ -103,6 +104,7 @@
* Create deep copy of the object.
*/
public Object clone() {
+
final NodeAppearanceCalculator copy = new
NodeAppearanceCalculator(deps);
// Copy defaults
@@ -112,12 +114,7 @@
}
copy.setDefaultAppearance(defAppr);
- //Copy mappings
- for(Calculator cal : this.calcs) {
- ObjectMapping mCopy = (ObjectMapping) cal.getMapping(0).clone();
- BasicCalculator bCalc = new BasicCalculator(cal.toString(),
mCopy, cal.getVisualPropertyType());
- copy.setCalculator(bCalc);
- }
+ this.copyCalculators(copy);
return copy;
}
Modified:
cytoscape/trunk/application/src/main/java/cytoscape/visual/VisualStyle.java
===================================================================
--- cytoscape/trunk/application/src/main/java/cytoscape/visual/VisualStyle.java
2010-11-02 21:48:29 UTC (rev 22692)
+++ cytoscape/trunk/application/src/main/java/cytoscape/visual/VisualStyle.java
2010-11-02 22:35:39 UTC (rev 22693)
@@ -35,11 +35,6 @@
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-//----------------------------------------------------------------------------
-// $Revision$
-// $Date$
-// $Author$
-//----------------------------------------------------------------------------
package cytoscape.visual;
import java.util.Vector;
@@ -49,7 +44,6 @@
import cytoscape.logger.CyLogger;
-//----------------------------------------------------------------------------
/**
* This class encapsulates a full set of visual mapping specifications for
* Cytoscape. Currently this is implemented by holding a reference to three
@@ -108,6 +102,7 @@
* Perform deep copy of this VisualStyle.
*/
public Object clone() throws CloneNotSupportedException {
+
VisualStyle copy = (VisualStyle) super.clone();
String dupeFreeName;
@@ -123,6 +118,7 @@
copy.name = dupeFreeName;
copy.dupeCount++;
+
copy.nodeAC = (NodeAppearanceCalculator) this.nodeAC.clone();
copy.edgeAC = (EdgeAppearanceCalculator) this.edgeAC.clone();
copy.globalAC = (GlobalAppearanceCalculator)
this.globalAC.clone();
Modified:
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/AbstractMapping.java
===================================================================
---
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/AbstractMapping.java
2010-11-02 21:48:29 UTC (rev 22692)
+++
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/AbstractMapping.java
2010-11-02 22:35:39 UTC (rev 22693)
@@ -33,7 +33,6 @@
}
-
abstract public void applyProperties(Properties props, String baseKey,
ValueParser parser);
Modified:
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/ContinuousMapping.java
===================================================================
---
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/ContinuousMapping.java
2010-11-02 21:48:29 UTC (rev 22692)
+++
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/ContinuousMapping.java
2010-11-02 22:35:39 UTC (rev 22693)
@@ -66,7 +66,8 @@
public class ContinuousMapping extends
AbstractMapping {
- final Class<?>[] ACCEPTED_CLASS = { Number.class };
+ // Accepts only numbers.
+ private static final Class<?>[] ACCEPTED_CLASS = { Number.class };
// used to interpolate between boundaries
private Interpolator interpolator;
@@ -113,6 +114,9 @@
* @return Cloned Mapping Object.
*/
public Object clone() {
+
+ // Constructor arguments
+ final Class<?> rangeClassClone;
final ContinuousMapping clone = new ContinuousMapping(
rangeClass, controllingAttrName);
@@ -120,7 +124,9 @@
for (ChangeListener listener : observers)
clone.addChangeListener(listener);
- for (ContinuousMappingPoint cmp : points) {
+
+ // Copy points
+ for (final ContinuousMappingPoint cmp : points) {
final ContinuousMappingPoint cmpClone =
(ContinuousMappingPoint) cmp.clone();
clone.addPoint(cmpClone.getValue(),
cmpClone.getRange());
}
Modified:
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/continuous/ContinuousMappingPoint.java
===================================================================
---
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/continuous/ContinuousMappingPoint.java
2010-11-02 21:48:29 UTC (rev 22692)
+++
cytoscape/trunk/application/src/main/java/cytoscape/visual/mappings/continuous/ContinuousMappingPoint.java
2010-11-02 22:35:39 UTC (rev 22693)
@@ -98,14 +98,17 @@
/**
* Clones the object. (Deep Copy)
+ *
* @return Cloned Object.
*/
public Object clone() {
final BoundaryRangeValues newRange = new BoundaryRangeValues();
+
newRange.lesserValue = range.lesserValue;
newRange.equalValue = range.equalValue;
newRange.greaterValue = range.greaterValue;
- return new ContinuousMappingPoint(value, newRange);
+ Double copyValue = new Double(value);
+ return new ContinuousMappingPoint(copyValue, newRange);
}
}
Modified:
cytoscape/trunk/application/src/main/java/cytoscape/visual/ui/VizMapperMainPanel.java
===================================================================
---
cytoscape/trunk/application/src/main/java/cytoscape/visual/ui/VizMapperMainPanel.java
2010-11-02 21:48:29 UTC (rev 22692)
+++
cytoscape/trunk/application/src/main/java/cytoscape/visual/ui/VizMapperMainPanel.java
2010-11-02 22:35:39 UTC (rev 22693)
@@ -2327,6 +2327,9 @@
}
protected class CopyStyleListener extends AbstractAction {
+
+ private static final long serialVersionUID =
4741684758183028809L;
+
public void actionPerformed(ActionEvent e) {
final VisualStyle currentStyle = vmm.getVisualStyle();
VisualStyle clone = null;
@@ -2339,9 +2342,8 @@
final String newName = getStyleName(clone);
- if ((newName == null) || (newName.trim().length() ==
0)) {
+ if ((newName == null) || (newName.trim().length() == 0))
return;
- }
clone.setName(newName);
--
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.