diff --git a/src/de/tud/kom/p2psim/impl/topology/views/visualization/ComponentVisManager.java b/src/de/tud/kom/p2psim/impl/topology/views/visualization/ComponentVisManager.java
index fc20b257ccab21dd39cdebc30038b41be87b8b59..008bd8542611d144d6313af5e986ae3b9d471abf 100644
--- a/src/de/tud/kom/p2psim/impl/topology/views/visualization/ComponentVisManager.java
+++ b/src/de/tud/kom/p2psim/impl/topology/views/visualization/ComponentVisManager.java
@@ -2,17 +2,17 @@
* Copyright (c) 2005-2010 KOM – Multimedia Communications Lab
*
* This file is part of PeerfactSim.KOM.
- *
+ *
* PeerfactSim.KOM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
- *
+ *
* PeerfactSim.KOM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with PeerfactSim.KOM. If not, see .
*
@@ -26,20 +26,21 @@ import java.util.List;
import java.util.Map;
import javax.swing.JComponent;
-import javax.swing.JMenu;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
+import de.tud.kom.p2psim.impl.topology.views.visualization.ui.SimControlPanel;
import de.tud.kom.p2psim.impl.topology.views.visualization.ui.VisualizationComponent;
+import de.tud.kom.p2psim.impl.util.guirunner.Config;
/**
* This manager keeps track of all components that are added to the UI. It can
* be used to add/remove named component to/from the UI and allows to change the
* components visibility based on their name or component reference.
- *
+ *
* @author Fabio Zöllner
* @version 1.0, 12.07.2012
*/
@@ -63,7 +64,7 @@ public class ComponentVisManager {
/**
* Adds the given component to the visualization
- *
+ *
* @param name
* @param priority
* @param component
@@ -74,7 +75,7 @@ public class ComponentVisManager {
/**
* Adds the given component to the visualization
- *
+ *
* @param name
* @param priority
* @param component
@@ -85,7 +86,7 @@ public class ComponentVisManager {
/**
* Adds the component of the given VisInfo to the visualization
- *
+ *
* @param visInfo
*/
public void addComponent(VisInfo visInfo) {
@@ -108,7 +109,7 @@ public class ComponentVisManager {
/**
* Removes the given component from the visualization
- *
+ *
* @param name
*/
public void removeComponent(String name) {
@@ -124,7 +125,7 @@ public class ComponentVisManager {
/**
* Removes the given component from the visualization
- *
+ *
* @param component
*/
public void removeComponent(JComponent component) {
@@ -144,20 +145,26 @@ public class ComponentVisManager {
/**
* Toggles the visibility of a component.
- *
+ *
* @param component
*/
public void toggleComponent(String name) {
+ boolean first = true;
for (JComponent component : nameToComponentMap.get(name)) {
toggleComponent(component);
+
+ if (first) {
+ Config.setValue(SimControlPanel.getConfMainPath(name), component.isVisible());
+ first = false;
+ }
}
}
/**
* Toggles the visibility of a component.
- *
+ *
* It's the same as component.setVisible(!component.isVisible());
- *
+ *
* @param component
*/
public void toggleComponent(JComponent component) {
@@ -178,7 +185,7 @@ public class ComponentVisManager {
/**
* Sets the given component invisible.
- *
+ *
* @param component
*/
public void deactivateComponent(String name) {
@@ -189,9 +196,9 @@ public class ComponentVisManager {
/**
* Sets the given component invisible.
- *
+ *
* It's the same as component.setVisible(false);
- *
+ *
* @param component
*/
public void deactivateComponent(JComponent component) {
@@ -204,7 +211,7 @@ public class ComponentVisManager {
/**
* Sets the given component visible.
- *
+ *
* @param component
*/
public void activateComponent(String name) {
@@ -215,9 +222,9 @@ public class ComponentVisManager {
/**
* Sets the given component visible.
- *
+ *
* It's the same as component.setVisible(true);
- *
+ *
* @param component
*/
public void activateComponent(JComponent component) {
@@ -229,7 +236,7 @@ public class ComponentVisManager {
/**
* Adds a visualization listener to the manager
- *
+ *
* @param listener
*/
public void addVisualizationListener(VisualizationListener listener) {
@@ -238,7 +245,7 @@ public class ComponentVisManager {
/**
* Removes a visualization listener from the manager
- *
+ *
* @param listener
*/
public void removeVisualizationListener(VisualizationListener listener) {
@@ -259,9 +266,9 @@ public class ComponentVisManager {
/**
* Bean that holds the name, priority and reference to the component.
- *
+ *
* Note: The equals and hashCode methods omit the priority.
- *
+ *
* @author Fabio Zöllner
* @version 1.0, 12.07.2012
*/
@@ -290,7 +297,7 @@ public class ComponentVisManager {
/**
* Recommended way: use the {@link VisualizationComponent}
- *
+ *
* @param comp
*/
public VisInfo(VisualizationComponent comp) {
@@ -308,7 +315,7 @@ public class ComponentVisManager {
/**
* Recommended container for custom visualizations.
- *
+ *
* @return may be null (legacy visualizations)
*/
public VisualizationComponent getVisualizationComponent() {
@@ -363,7 +370,7 @@ public class ComponentVisManager {
/**
* A listener interface that is used by the ComponentVisManager to notify
* interested parties about added or removed visualization components.
- *
+ *
* @author Fabio Zöllner
* @version 1.0, 12.07.2012
*/
@@ -375,7 +382,7 @@ public class ComponentVisManager {
/**
* Returns a list of currently visible and invisible components.
- *
+ *
* @return
*/
public Collection getVisualizations() {
diff --git a/src/de/tud/kom/p2psim/impl/topology/views/visualization/ui/SimControlPanel.java b/src/de/tud/kom/p2psim/impl/topology/views/visualization/ui/SimControlPanel.java
index 620747e0da3089362167df70c04090ab2a20d226..530029c831c7e84003f2b96a1ec783691b89e5a4 100644
--- a/src/de/tud/kom/p2psim/impl/topology/views/visualization/ui/SimControlPanel.java
+++ b/src/de/tud/kom/p2psim/impl/topology/views/visualization/ui/SimControlPanel.java
@@ -2,17 +2,17 @@
* Copyright (c) 2005-2010 KOM – Multimedia Communications Lab
*
* This file is part of PeerfactSim.KOM.
- *
+ *
* PeerfactSim.KOM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
- *
+ *
* PeerfactSim.KOM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with PeerfactSim.KOM. If not, see .
*
@@ -43,16 +43,18 @@ import de.tud.kom.p2psim.impl.topology.views.VisualizationTopologyView.Visualiza
import de.tud.kom.p2psim.impl.topology.views.visualization.ComponentVisManager;
import de.tud.kom.p2psim.impl.topology.views.visualization.ComponentVisManager.VisInfo;
import de.tud.kom.p2psim.impl.topology.views.visualization.ComponentVisManager.VisualizationListener;
+import de.tud.kom.p2psim.impl.util.guirunner.Config;
/**
* Menu-Bar containing means to alter the simulation speed, pause and un-pause
* simulations and (new) configuration of plots and visualization layers.
- *
+ *
* @author Bjoern Richerzhagen
* @version 1.0, 27.08.2012
*/
-public class SimControlPanel extends JMenuBar
- implements ActionListener, ChangeListener, VisualizationListener {
+public class SimControlPanel extends JMenuBar implements ActionListener, ChangeListener, VisualizationListener {
+
+ private static final String CONF_PATH = "GUIRunner/Menu/Layels/";
private static final long serialVersionUID = -914578954798611308L;
@@ -111,7 +113,7 @@ public class SimControlPanel extends JMenuBar
}
return layerMenu;
}
-
+
public ComponentVisManager getVisManager() {
return visManager;
}
@@ -119,7 +121,14 @@ public class SimControlPanel extends JMenuBar
@Override
public void visualizationAdded(VisInfo visInfo) {
JCheckBoxMenuItem checkBox = new JCheckBoxMenuItem(visInfo.getName());
- checkBox.setSelected(visInfo.isActiveByDefault());
+ boolean isActive = visInfo.isActiveByDefault();
+
+ isActive = Config.getValue(getConfMainPath(visInfo.getName()), isActive);
+
+ checkBox.setSelected(isActive);
+ if (!isActive) {
+ getVisManager().deactivateComponent(visInfo.getName());
+ }
checkBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
@@ -221,4 +230,22 @@ public class SimControlPanel extends JMenuBar
}
}
+ /**
+ * @return the confPath
+ */
+ public static String getConfPath(String pName) {
+ return CONF_PATH + pName.replace(":", "").replaceAll(" ", "");
+ }
+
+ /**
+ * @return the confPath
+ */
+ public static String getConfMainPath(String pName) {
+ String newName = "Layer_" + pName.replace(":", "").replaceAll(" ", "").replace("/", "_");
+ if (newName.length() > 1) {
+ return CONF_PATH + newName + "/Main";
+ }
+ return null;
+ }
+
}