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 4195ae9f81f2e306b3d5386b394fd6b231b06eba..592a89b00510c01cbc698894152e43e73cd86713 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 @@ -3,12 +3,14 @@ package lcsb.mapviewer.converter.model.celldesigner; import lcsb.mapviewer.common.XmlParser; import lcsb.mapviewer.common.exception.InvalidXmlSchemaException; import lcsb.mapviewer.common.geometry.ColorParser; +import lcsb.mapviewer.converter.ComplexZipConverter; import lcsb.mapviewer.model.graphics.ArrowType; import lcsb.mapviewer.model.graphics.LineType; import lcsb.mapviewer.model.graphics.PolylineData; import lcsb.mapviewer.model.map.layout.BlockDiagram; import lcsb.mapviewer.model.map.layout.ElementGroup; import lcsb.mapviewer.model.map.layout.graphics.Layer; +import lcsb.mapviewer.model.map.layout.graphics.LayerImage; import lcsb.mapviewer.model.map.layout.graphics.LayerOval; import lcsb.mapviewer.model.map.layout.graphics.LayerRect; import lcsb.mapviewer.model.map.layout.graphics.LayerText; @@ -23,6 +25,7 @@ import org.w3c.dom.NodeList; import java.awt.Color; import java.awt.geom.Point2D; +import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -278,15 +281,18 @@ public class LayerXmlParser { if (!NumberUtils.isParsable(id)) { id = (problematicIdCounter++) + ""; } - result.append("<celldesigner:layer id =\"" + id + "\" "); - result.append(" name =\"" + XmlParser.escapeXml(layer.getName()) + "\" "); - result.append(" locked =\"" + layer.isLocked() + "\" "); - result.append(" visible =\"" + layer.isVisible() + "\">\n"); + result.append("<celldesigner:layer id =\"").append(id).append("\" "); + result.append(" name =\"").append(XmlParser.escapeXml(layer.getName())).append("\" "); + result.append(" locked =\"").append(layer.isLocked()).append("\" "); + result.append(" visible =\"").append(layer.isVisible()).append("\">\n"); result.append("<celldesigner:listOfTexts>\n"); for (final LayerText layerText : layer.getTexts()) { result.append(layerTextToXml(layerText)); } + for (final LayerImage layerImage : layer.getImages()) { + result.append(layerImageToXml(layerImage)); + } result.append("</celldesigner:listOfTexts>\n"); result.append("<celldesigner:listOfSquares>\n"); @@ -553,4 +559,24 @@ public class LayerXmlParser { return result.toString(); } + String layerImageToXml(final LayerImage layer) { + StringBuilder result = new StringBuilder(); + result.append("<celldesigner:layerSpeciesAlias>"); + result.append("<celldesigner:layerNotes>\n"); + String notes = ""; + if (layer.getGlyph() != null) { + notes += "\n" + ComplexZipConverter.GLYPH_PREFIX + "glyphs/" + new File(layer.getGlyph().getFile().getOriginalFileName()).getName(); + } + result.append(notes); + result.append("\n</celldesigner:layerNotes>"); + result.append("<celldesigner:paint color=\"" + XmlParser.colorToString(Color.BLACK) + "\"/>"); + result.append("<celldesigner:bounds x=\"" + layer.getX() + "\" "); + result.append(" y=\"" + layer.getY() + "\" "); + result.append(" w=\"" + layer.getWidth() + "\" "); + result.append(" h=\"" + layer.getHeight() + "\"/>"); + result.append("<celldesigner:font size=\"" + ((int) LayerText.DEFAULT_LAYER_FONT_SIZE) + "\"/>"); + result.append("</celldesigner:layerSpeciesAlias>\n"); + return result.toString(); + } + } diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerTestFunctions.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerTestFunctions.java index c6f6b59e968830118fe45057e7c4f7b7a967fdc5..379d507b56614c810ccdf4bdc7ec59b3e21086d8 100644 --- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerTestFunctions.java +++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/CellDesignerTestFunctions.java @@ -24,6 +24,7 @@ import lcsb.mapviewer.model.map.kinetics.SbmlParameter; import lcsb.mapviewer.model.map.kinetics.SbmlUnit; import lcsb.mapviewer.model.map.layout.graphics.Glyph; import lcsb.mapviewer.model.map.layout.graphics.Layer; +import lcsb.mapviewer.model.map.layout.graphics.LayerImage; import lcsb.mapviewer.model.map.layout.graphics.LayerText; import lcsb.mapviewer.model.map.model.Model; import lcsb.mapviewer.model.map.model.ModelComparator; @@ -111,6 +112,9 @@ public abstract class CellDesignerTestFunctions extends TestUtils { protected void clearModelFromZ(final Model model) { for (final Drawable bioEntity : model.getDrawables()) { bioEntity.setZ(null); + if (bioEntity instanceof Element) { + ((Element) bioEntity).setVisibilityLevel(0); + } } } @@ -172,11 +176,22 @@ public abstract class CellDesignerTestFunctions extends TestUtils { layerText.setWidth(233.0); layerText.setHeight(188.0); layerText.setZ(0); - layerText.setNotes("asd as"); - layerText.setColor(Color.BLACK); + layerText.setNotes(faker.lorem().paragraph()); + layerText.setColor(new ColorParser().parse(faker.color().hex())); return layerText; } + protected LayerImage createImage() throws IOException { + final LayerImage image = new LayerImage(); + image.setX(256.0); + image.setY(79.0); + image.setWidth(233.0); + image.setHeight(188.0); + image.setZ(0); + image.setGlyph(createGlyph()); + return image; + } + protected static SbmlFunction createFunction() throws InvalidXmlSchemaException { SbmlFunction fun = new SbmlFunction("fun_id" + (idCounter++)); fun.setDefinition("<math xmlns=\"http://www.w3.org/1998/Math/MathML\">\n" diff --git a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/ProjectExportTest.java b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/ProjectExportTest.java index 4f29ab512cfe8d6d583c9d1efb9ea8a3ee35c1a4..fb3eb9eaabdf3aa675bce407f8e54635941a674a 100644 --- a/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/ProjectExportTest.java +++ b/converter-CellDesigner/src/test/java/lcsb/mapviewer/converter/model/celldesigner/ProjectExportTest.java @@ -1,5 +1,6 @@ package lcsb.mapviewer.converter.model.celldesigner; +import lcsb.mapviewer.commands.CreateHierarchyCommand; import lcsb.mapviewer.converter.ComplexZipConverter; import lcsb.mapviewer.converter.ComplexZipConverterParams; import lcsb.mapviewer.converter.ProjectFactory; @@ -8,6 +9,9 @@ import lcsb.mapviewer.converter.zip.ZipEntryFileFactory; import lcsb.mapviewer.model.Project; import lcsb.mapviewer.model.ProjectComparator; import lcsb.mapviewer.model.map.layout.graphics.Glyph; +import lcsb.mapviewer.model.map.layout.graphics.Layer; +import lcsb.mapviewer.model.map.layout.graphics.LayerImage; +import lcsb.mapviewer.model.map.layout.graphics.LayerText; import lcsb.mapviewer.model.map.model.ElementSubmodelConnection; import lcsb.mapviewer.model.map.model.Model; import lcsb.mapviewer.model.map.model.ModelData; @@ -175,6 +179,7 @@ public class ProjectExportTest extends CellDesignerTestFunctions { clearModelFromZ(model); } for (ModelData model : project2.getModels()) { + new CreateHierarchyCommand(model.getModel(), 10, 1000).execute(); clearModelFromZ(model); } @@ -201,4 +206,37 @@ public class ProjectExportTest extends CellDesignerTestFunctions { return complexParams; } + @Test + public void testLayerWithText() throws Exception { + Project project = createProject(); + Model model = createEmptyModel(); + model.setWidth(745); + model.setHeight(346); + Layer layer = createLayer(); + LayerText layerText = createText(); + layer.addLayerText(layerText); + model.addLayer(layer); + + project.addModel(model); + + testSerializationOverZip(project); + } + + @Test + public void testLayerWithImage() throws Exception { + Project project = createProject(); + Model model = createEmptyModel(); + model.setWidth(745); + model.setHeight(346); + Layer layer = createLayer(); + LayerImage image = createImage(); + layer.addLayerImage(image); + model.addLayer(layer); + + project.addModel(model); + project.addGlyph(image.getGlyph()); + + testSerializationOverZip(project); + } + } diff --git a/converter/src/main/java/lcsb/mapviewer/converter/ComplexZipConverter.java b/converter/src/main/java/lcsb/mapviewer/converter/ComplexZipConverter.java index c00117499d594f9ca6dbf8395de7f63544cf679c..cf641959f46da1474be42bb3c9da763077078201 100644 --- a/converter/src/main/java/lcsb/mapviewer/converter/ComplexZipConverter.java +++ b/converter/src/main/java/lcsb/mapviewer/converter/ComplexZipConverter.java @@ -68,7 +68,7 @@ public class ComplexZipConverter { */ private static final Logger logger = LogManager.getLogger(); protected static final String IMMEDIATE_LINK_PREFIX = "IMMEDIATE_LINK:"; - protected static final String GLYPH_PREFIX = "Glyph:"; + public static final String GLYPH_PREFIX = "Glyph:"; /** * Class used to create single submap from a file. diff --git a/converter/src/main/java/lcsb/mapviewer/converter/ProjectFactory.java b/converter/src/main/java/lcsb/mapviewer/converter/ProjectFactory.java index ea388b84d9e89ee8407b8086e382079958d0c29a..6a4939e969387cde2a19461ddf846145d3331926 100644 --- a/converter/src/main/java/lcsb/mapviewer/converter/ProjectFactory.java +++ b/converter/src/main/java/lcsb/mapviewer/converter/ProjectFactory.java @@ -14,6 +14,7 @@ import lcsb.mapviewer.model.map.compartment.Compartment; import lcsb.mapviewer.model.map.compartment.SquareCompartment; import lcsb.mapviewer.model.map.layout.graphics.Glyph; import lcsb.mapviewer.model.map.layout.graphics.Layer; +import lcsb.mapviewer.model.map.layout.graphics.LayerImage; import lcsb.mapviewer.model.map.layout.graphics.LayerText; import lcsb.mapviewer.model.map.model.ElementSubmodelConnection; import lcsb.mapviewer.model.map.model.Model; @@ -218,6 +219,17 @@ public class ProjectFactory { zos.closeEntry(); } } + for (Layer layer : model.getLayers()) { + for (LayerImage image : layer.getImages()) { + if (image.getGlyph() != null) { + UploadedFileEntry uploadedFileEntry = image.getGlyph().getFile(); + ZipEntry entry = new ZipEntry(ZipEntryFileFactory.GLYPHS_DIRECTORY + new File(uploadedFileEntry.getOriginalFileName()).getName()); + zos.putNextEntry(entry); + zos.write(uploadedFileEntry.getFileContent()); + zos.closeEntry(); + } + } + } } private int idCounter = 0; 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 9a6046aa981320eed0701fb8d773150340b812bc..30baa1a2231359e2882fb776fbf680e2a8ef0748 100644 --- a/model-command/src/main/java/lcsb/mapviewer/commands/CreateHierarchyCommand.java +++ b/model-command/src/main/java/lcsb/mapviewer/commands/CreateHierarchyCommand.java @@ -8,6 +8,7 @@ import lcsb.mapviewer.model.graphics.VerticalAlign; import lcsb.mapviewer.model.map.compartment.Compartment; import lcsb.mapviewer.model.map.compartment.PathwayCompartment; import lcsb.mapviewer.model.map.layout.graphics.Layer; +import lcsb.mapviewer.model.map.layout.graphics.LayerImage; import lcsb.mapviewer.model.map.layout.graphics.LayerRect; import lcsb.mapviewer.model.map.layout.graphics.LayerText; import lcsb.mapviewer.model.map.model.Model; @@ -33,7 +34,7 @@ import java.util.Set; */ public class CreateHierarchyCommand extends ModelCommand { - public static final String TEXT_LAYER_NAME = "text"; + public static final String PATHWAY_LAYER_NAME = "pathways"; /** * Natural logarithm of four. @@ -154,8 +155,10 @@ public class CreateHierarchyCommand extends ModelCommand { RestAnnotationParser rap = new RestAnnotationParser(); Model model = getModel(); int id = 0; + Layer pathwayLayer = null; for (final Layer layer : model.getLayers()) { - if (!Objects.equals(layer.getName(), TEXT_LAYER_NAME)) { + if (Objects.equals(layer.getName(), PATHWAY_LAYER_NAME)) { + pathwayLayer = layer; for (final LayerRect rect : layer.getRectangles()) { int nextId = getNextArtId(model, id); id = nextId + 1; @@ -207,8 +210,33 @@ public class CreateHierarchyCommand extends ModelCommand { model.addElement(compartment); } + } else { + Set<LayerText> objectsToRemove = new HashSet<>(); + for (final LayerText text : layer.getTexts()) { + int nextId = getNextArtId(model, id); + id = nextId + 1; + + if (text.getGlyph() != null) { + objectsToRemove.add(text); + + LayerImage image = new LayerImage(); + image.setX(text.getX()); + image.setY(text.getY()); + image.setZ(text.getZ()); + image.setWidth(text.getWidth()); + image.setHeight(text.getHeight()); + image.setGlyph(text.getGlyph()); + layer.addLayerImage(image); + } + } + for (LayerText image : objectsToRemove) { + layer.removeLayerText(image); + } } } + if (pathwayLayer != null) { + model.removeLayer(pathwayLayer); + } } private int getNextArtId(final Model model, final int id) { diff --git a/model-command/src/test/java/lcsb/mapviewer/commands/CommandTestFunctions.java b/model-command/src/test/java/lcsb/mapviewer/commands/CommandTestFunctions.java index 3b9ab3f51bafcdaab226fe9370bc18442b8d3e1f..a9f361fbdfb3148e2b25be8737f7a7f1d8d3fcb4 100644 --- a/model-command/src/test/java/lcsb/mapviewer/commands/CommandTestFunctions.java +++ b/model-command/src/test/java/lcsb/mapviewer/commands/CommandTestFunctions.java @@ -3,9 +3,14 @@ package lcsb.mapviewer.commands; import lcsb.mapviewer.common.Configuration; import lcsb.mapviewer.common.tests.TestUtils; import lcsb.mapviewer.common.tests.UnitTestFailedWatcher; +import lcsb.mapviewer.model.cache.UploadedFileEntry; import lcsb.mapviewer.model.graphics.HorizontalAlign; import lcsb.mapviewer.model.graphics.PolylineData; import lcsb.mapviewer.model.graphics.VerticalAlign; +import lcsb.mapviewer.model.map.layout.graphics.Glyph; +import lcsb.mapviewer.model.map.layout.graphics.LayerImage; +import lcsb.mapviewer.model.map.layout.graphics.LayerRect; +import lcsb.mapviewer.model.map.layout.graphics.LayerText; import lcsb.mapviewer.model.map.model.Model; import lcsb.mapviewer.model.map.model.ModelFullIndexed; import lcsb.mapviewer.model.map.reaction.Product; @@ -21,6 +26,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.Rule; +import java.awt.Color; import java.awt.geom.Point2D; import java.util.ArrayList; import java.util.HashMap; @@ -137,4 +143,38 @@ public abstract class CommandTestFunctions extends TestUtils { element.setNameHorizontalAlign(HorizontalAlign.CENTER); } + protected LayerRect createLayerRect() { + LayerRect layerRect = new LayerRect(); + layerRect.setBorderColor(Color.BLUE); + layerRect.setFillColor(Color.YELLOW); + return layerRect; + } + + protected LayerImage createLayerImage() { + LayerImage layerImage = new LayerImage(); + layerImage.setGlyph(createGlyph()); + return layerImage; + } + + protected LayerText createLayerText() { + LayerText layerText = new LayerText(); + layerText.setGlyph(createGlyph()); + layerText.setFillColor(Color.YELLOW); + layerText.setNotes(faker.lorem().sentence()); + return layerText; + } + + protected Glyph createGlyph() { + Glyph glyph = new Glyph(); + glyph.setFile(createFile()); + return glyph; + } + + private UploadedFileEntry createFile() { + UploadedFileEntry file = new UploadedFileEntry(); + file.setOriginalFileName(faker.file().fileName()); + return file; + } + + } diff --git a/model-command/src/test/java/lcsb/mapviewer/commands/CreateHierarchyCommandTest.java b/model-command/src/test/java/lcsb/mapviewer/commands/CreateHierarchyCommandTest.java index 246adc24a19e3ac76a9bcf5489dcfba040d88586..32dc9dbba304d7fda63c5f9df8cb6554075bd9f3 100644 --- a/model-command/src/test/java/lcsb/mapviewer/commands/CreateHierarchyCommandTest.java +++ b/model-command/src/test/java/lcsb/mapviewer/commands/CreateHierarchyCommandTest.java @@ -11,8 +11,6 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import java.awt.Color; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; @@ -32,6 +30,7 @@ public class CreateHierarchyCommandTest extends CommandTestFunctions { Model model = new ModelFullIndexed(null); Layer layer = new Layer(); + layer.setName(CreateHierarchyCommand.PATHWAY_LAYER_NAME); LayerRect layerRect = createLayerRect(); layer.addLayerRect(layerRect); model.addLayer(layer); @@ -44,18 +43,12 @@ public class CreateHierarchyCommandTest extends CommandTestFunctions { assertEquals(pathway.getBorderColor(), pathway.getFontColor()); } - private LayerRect createLayerRect() { - LayerRect layerRect = new LayerRect(); - layerRect.setBorderColor(Color.BLUE); - layerRect.setFillColor(Color.YELLOW); - return layerRect; - } - @Test public void testCreatePathwayWhenIdIsTaken() throws Exception { Model model = new ModelFullIndexed(null); Layer layer = new Layer(); + layer.setName(CreateHierarchyCommand.PATHWAY_LAYER_NAME); LayerRect layerRect = createLayerRect(); layer.addLayerRect(layerRect); LayerRect layerRect2 = createLayerRect(); @@ -84,6 +77,7 @@ public class CreateHierarchyCommandTest extends CommandTestFunctions { Model model = new ModelFullIndexed(null); Layer layer = new Layer(); + layer.setName(CreateHierarchyCommand.PATHWAY_LAYER_NAME); LayerText layerText = new LayerText(); layerText.setNotes("colors check\n" + "SemanticZoomLevelVisibility: 3\n" @@ -116,7 +110,7 @@ public class CreateHierarchyCommandTest extends CommandTestFunctions { Model model = new ModelFullIndexed(null); Layer layer = new Layer(); - layer.setName(CreateHierarchyCommand.TEXT_LAYER_NAME); + layer.setName(CreateHierarchyCommand.PATHWAY_LAYER_NAME + "blah"); LayerRect layerRect = createLayerRect(); layer.addLayerRect(layerRect); model.addLayer(layer); @@ -127,4 +121,40 @@ public class CreateHierarchyCommandTest extends CommandTestFunctions { assertEquals(0, model.getCompartments().size()); } + @Test + public void deletePathwayLayer() { + Model model = new ModelFullIndexed(null); + + Layer layer = new Layer(); + layer.setName(CreateHierarchyCommand.PATHWAY_LAYER_NAME); + LayerRect layerRect = createLayerRect(); + layer.addLayerRect(layerRect); + model.addLayer(layer); + + CreateHierarchyCommand command = new CreateHierarchyCommand(model, 4, 80); + command.createArtificials(); + + PathwayCompartment pathway = (PathwayCompartment) model.getCompartments().get(0); + + assertEquals(0, model.getLayers().size()); + } + + @Test + public void testCreateImageFromText() { + Model model = new ModelFullIndexed(null); + + Layer layer = new Layer(); + layer.setName(CreateHierarchyCommand.PATHWAY_LAYER_NAME + "blah"); + LayerText layerText = createLayerText(); + layer.addLayerText(layerText); + model.addLayer(layer); + + CreateHierarchyCommand command = new CreateHierarchyCommand(model, 4, 80); + command.createArtificials(); + + assertEquals(0, model.getCompartments().size()); + assertEquals(1, layer.getImages().size()); + assertEquals(0, layer.getTexts().size()); + } + } diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/Layer.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/Layer.java index 7ccf3708f6c06f557926eeebff97ae13a2b1e206..fd635e43dae7aff8c2ab93436af79fbbbead22a7 100644 --- a/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/Layer.java +++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/Layer.java @@ -434,6 +434,7 @@ public class Layer implements MinervaEntity { result.addAll(ovals); result.addAll(rectangles); result.addAll(texts); + result.addAll(images); return result; } diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/LayerImageComparator.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/LayerImageComparator.java index 1849718e2111159baf115ef83277056a4bf566c3..9c45516173d42374815022e853a3ebc2505aade2 100644 --- a/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/LayerImageComparator.java +++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/LayerImageComparator.java @@ -23,23 +23,29 @@ public class LayerImageComparator extends Comparator<LayerImage> { DoubleComparator doubleComparator = new DoubleComparator(epsilon); IntegerComparator integerComparator = new IntegerComparator(); - if (doubleComparator.compare(arg0.getWidth(), arg1.getWidth()) != 0) { - return doubleComparator.compare(arg0.getWidth(), arg1.getWidth()); + int status = doubleComparator.compare(arg0.getWidth(), arg1.getWidth()); + if (status != 0) { + logger.debug("Image width different: {} != {}", arg0.getWidth(), arg1.getWidth()); + return status; } if (doubleComparator.compare(arg0.getHeight(), arg1.getHeight()) != 0) { + logger.debug("Image Height different: {} != {}", arg0.getHeight(), arg1.getHeight()); return doubleComparator.compare(arg0.getHeight(), arg1.getHeight()); } if (doubleComparator.compare(arg0.getX(), arg1.getX()) != 0) { + logger.debug("Image X different: {} != {}", arg0.getX(), arg1.getX()); return doubleComparator.compare(arg0.getX(), arg1.getX()); } if (doubleComparator.compare(arg0.getY(), arg1.getY()) != 0) { + logger.debug("Image Y different: {} != {}", arg0.getY(), arg1.getY()); return doubleComparator.compare(arg0.getY(), arg1.getY()); } if (integerComparator.compare(arg0.getZ(), arg1.getZ()) != 0) { + logger.debug("Image Z different: {} != {}", arg0.getZ(), arg1.getZ()); return integerComparator.compare(arg0.getZ(), arg1.getZ()); } diff --git a/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/LayerText.java b/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/LayerText.java index e6e6be49e6dc342833516e2b5826050656ddd3ce..3cb94de59267845468099013216c6abdd173397a 100644 --- a/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/LayerText.java +++ b/model/src/main/java/lcsb/mapviewer/model/map/layout/graphics/LayerText.java @@ -43,7 +43,7 @@ public class LayerText implements MinervaEntity, Drawable { /** * Default font size of the text. */ - private static final double DEFAULT_LAYER_FONT_SIZE = 11.0; + public static final double DEFAULT_LAYER_FONT_SIZE = 11.0; /** * Default class logger. diff --git a/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java b/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java index b9c683193f3b421dbe0a78938610e3115966f65c..d3525bfdb0dd8f169020e033f9a7b5ce1b82b2a9 100644 --- a/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java +++ b/model/src/main/java/lcsb/mapviewer/model/map/model/Model.java @@ -507,4 +507,6 @@ public interface Model { Set<Drawable> getDrawables(boolean onlyVisible); Collection<Element> getSortedElements(); + + void removeLayer(Layer pathwayLayer); } diff --git a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelData.java b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelData.java index 9258dcedb579239edc6c703a61d23e89e7992222..996edbb7250bdfc94a6ed954e61e4b3c7df2aa21 100644 --- a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelData.java +++ b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelData.java @@ -793,4 +793,8 @@ public class ModelData implements MinervaEntity { public EntityType getEntityType() { throw new NotImplementedException(); } + + public void removeLayer(final Layer pathwayLayer) { + this.layers.remove(pathwayLayer); + } } \ No newline at end of file diff --git a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java index ffa13ff0832c8ee05f30e028ec815bcff95b131e..3a672046de4fe8e9fa4b2a159d1e652971b9214a 100644 --- a/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java +++ b/model/src/main/java/lcsb/mapviewer/model/map/model/ModelFullIndexed.java @@ -739,4 +739,9 @@ public class ModelFullIndexed implements Model { result.sort(new ElementByIdComparator()); return result; } + + @Override + public void removeLayer(final Layer pathwayLayer) { + modelData.removeLayer(pathwayLayer); + } }