From a933265b87db4286b52c42a697c48da3d380f748 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Fri, 25 Oct 2019 15:31:22 +0200 Subject: [PATCH] border color is considered when creating/exporting pathways --- .../model/celldesigner/LayerXmlParser.java | 33 ++++++++++++++++--- .../celldesigner/LayerXmlParserTest.java | 2 ++ .../commands/CreateHierarchyCommand.java | 1 + 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/LayerXmlParser.java b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/LayerXmlParser.java index a72a5d3780..a0a0459c99 100644 --- a/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/LayerXmlParser.java +++ b/converter-CellDesigner/src/main/java/lcsb/mapviewer/converter/model/celldesigner/LayerXmlParser.java @@ -1,9 +1,8 @@ package lcsb.mapviewer.converter.model.celldesigner; -import java.awt.*; +import java.awt.Color; import java.awt.geom.Point2D; import java.util.*; -import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -502,6 +501,11 @@ public class LayerXmlParser { result.setBackgroundColor(backgroundColor); notes = removeBackgroundColor(notes); } + Color borderColor = extractBorderColor(notes); + if (borderColor != null) { + result.setBorderColor(borderColor); + notes = removeBorderColor(notes); + } result.setNotes(notes); } else if (node.getNodeName().equalsIgnoreCase("celldesigner:paint")) { result.setColor(commonParser.getColor(node)); @@ -523,10 +527,18 @@ public class LayerXmlParser { } String removeBackgroundColor(String notes) { + return removeColor(notes, "BackgroundColor"); + } + + String removeBorderColor(String notes) { + return removeColor(notes, "BorderColor"); + } + + private String removeColor(String notes, String string) { String lines[] = notes.split("[\n\r]+"); StringBuilder result = new StringBuilder(""); for (String line : lines) { - if (!line.startsWith("BackgroundColor=") && !line.startsWith("BackgroundColor:")) { + if (!line.startsWith(string + "=") && !line.startsWith(string + ":")) { result.append(line + "\n"); } } @@ -534,10 +546,18 @@ public class LayerXmlParser { } Color extractBackgroundColor(String notes) { + return extractColor(notes, "BackgroundColor"); + } + + Color extractBorderColor(String notes) { + return extractColor(notes, "BorderColor"); + } + + private Color extractColor(String notes, String string) { String lines[] = notes.split("[\n\r]+"); for (String line : lines) { - if (line.startsWith("BackgroundColor=") ||line.startsWith("BackgroundColor:")) { - String colorString = line.replace("BackgroundColor=", "").replace("BackgroundColor:", ""); + if (line.startsWith(string + "=") || line.startsWith(string + ":")) { + String colorString = line.replace(string + "=", "").replace(string + ":", ""); return new ColorParser().parse(colorString); } } @@ -562,6 +582,9 @@ public class LayerXmlParser { if (!layer.getBackgroundColor().equals(Color.LIGHT_GRAY)) { notes += "\nBackgroundColor:" + new ColorParser().colorToHtml(layer.getBackgroundColor()); } + if (!layer.getBorderColor().equals(Color.LIGHT_GRAY)) { + notes += "\nBorderColor:" + new ColorParser().colorToHtml(layer.getBorderColor()); + } result.append(notes); result.append("\n</celldesigner:layerNotes>"); result.append("<celldesigner:paint color=\"" + XmlParser.colorToString(layer.getColor()) + "\"/>"); diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/LayerXmlParserTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/LayerXmlParserTest.java index 8f943b08cc..d91b77fc09 100644 --- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/LayerXmlParserTest.java +++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/LayerXmlParserTest.java @@ -326,8 +326,10 @@ public class LayerXmlParserTest extends CellDesignerTestFunctions { public void testLayerTextToXmlWithCustomDefaultBackgroundColor() throws Exception { LayerText text = new LayerText(); text.setBackgroundColor(Color.BLUE); + text.setBorderColor(Color.YELLOW); String xml = parser.layerTextToXml(text); assertTrue(xml.contains("BackgroundColor")); + assertTrue(xml.contains("BorderColor")); } } diff --git a/model-command/src/main/java/lcsb/mapviewer/commands/CreateHierarchyCommand.java b/model-command/src/main/java/lcsb/mapviewer/commands/CreateHierarchyCommand.java index 7170fbbaf8..a7ccbb23a0 100644 --- a/model-command/src/main/java/lcsb/mapviewer/commands/CreateHierarchyCommand.java +++ b/model-command/src/main/java/lcsb/mapviewer/commands/CreateHierarchyCommand.java @@ -169,6 +169,7 @@ public class CreateHierarchyCommand extends ModelCommand { compartment.setHeight(text.getHeight()); compartment.setFontColor(text.getColor()); compartment.setFillColor(text.getBackgroundColor()); + compartment.setBorderColor(text.getBorderColor()); compartment.setName(extractNameFromText(text.getNotes())); compartment.setNotes(extractNotesFromText(text.getNotes())); compartment.setZ(text.getZ()); -- GitLab