|
@@ -26,12 +26,12 @@ import javax.swing.tree.TreePath;
|
|
|
|
|
|
import de.tu_darmstadt.tk.SmartHomeNetworkSim.control.Controller;
|
|
|
import de.tu_darmstadt.tk.SmartHomeNetworkSim.control.NetworkController;
|
|
|
+import de.tu_darmstadt.tk.SmartHomeNetworkSim.control.NetworkTreeSettingsController;
|
|
|
import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Connection;
|
|
|
import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Link;
|
|
|
import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Port;
|
|
|
import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.SmartDevice;
|
|
|
import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.configuration.NetworkTreeNodeStatus;
|
|
|
-import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.configuration.NetworkTreeSettings;
|
|
|
|
|
|
/**
|
|
|
* Network Tree Panel which visualizes the Network as a Tree
|
|
@@ -64,9 +64,10 @@ public class NetworkTreePanel extends JScrollPane implements Observer {
|
|
|
*/
|
|
|
private NetworkTreePanel that;
|
|
|
/**
|
|
|
- * NetworkTreeSettings
|
|
|
+ * NetworkTreeSettings Controller
|
|
|
*/
|
|
|
- private NetworkTreeSettings networkTreeSettings;
|
|
|
+ private NetworkTreeSettingsController networkTreeSettings;
|
|
|
+
|
|
|
/**
|
|
|
* Network Controller
|
|
|
*/
|
|
@@ -89,6 +90,18 @@ public class NetworkTreePanel extends JScrollPane implements Observer {
|
|
|
* MenuItem for deletion of devices
|
|
|
*/
|
|
|
private JMenuItem mntmDelete = new JMenuItem("Delete");
|
|
|
+ /**
|
|
|
+ * MenuItem for expanding/collapsing nodes
|
|
|
+ */
|
|
|
+ private JMenuItem mntmExpand = new JMenuItem("Expand");
|
|
|
+ /**
|
|
|
+ * MenuItem for changing visibility of objects
|
|
|
+ */
|
|
|
+ private JMenuItem mntmShow = new JMenuItem("Show");
|
|
|
+ /**
|
|
|
+ * MenuItem for changing visibility of an object and all its descendants
|
|
|
+ */
|
|
|
+ private JMenuItem mntmShowRecursive = new JMenuItem("Show recursive");
|
|
|
|
|
|
/**
|
|
|
* Clicked object (Device, Link or Connection)
|
|
@@ -113,7 +126,7 @@ public class NetworkTreePanel extends JScrollPane implements Observer {
|
|
|
this.parent = parent;
|
|
|
this.controller = controller;
|
|
|
network = this.controller.getNetworkController();
|
|
|
- networkTreeSettings = controller.getSettingsController().getConfigurationManager().getNetworkTreeSettings();
|
|
|
+ networkTreeSettings = controller.getSettingsController().getNetworkTreeSettingsController();
|
|
|
tree = new JTree();
|
|
|
initializeRightClickMenu();
|
|
|
|
|
@@ -145,6 +158,7 @@ public class NetworkTreePanel extends JScrollPane implements Observer {
|
|
|
TreePath clicked = tree.getPathForLocation(e.getX(), e.getY());
|
|
|
if(clicked==null||clicked.getPath() == null || clicked.getLastPathComponent() == null)
|
|
|
return;
|
|
|
+ clickedObject = ((DefaultMutableTreeNode)clicked.getLastPathComponent()).getUserObject();
|
|
|
//Expand/Collapse
|
|
|
/*
|
|
|
if(SwingUtilities.isLeftMouseButton(e)&&e.getClickCount()==2&&clicked!=null&&clicked.getLastPathComponent()!=null){
|
|
@@ -346,6 +360,27 @@ public class NetworkTreePanel extends JScrollPane implements Observer {
|
|
|
*/
|
|
|
private void initializeRightClickMenu() {
|
|
|
rightClick = new JPopupMenu();
|
|
|
+
|
|
|
+ mntmExpand.addActionListener(a->{
|
|
|
+ if(clickedObject==null)return;
|
|
|
+ networkTreeSettings.toggleExpanded(clickedObject);
|
|
|
+ });
|
|
|
+
|
|
|
+ rightClick.add(mntmExpand);
|
|
|
+
|
|
|
+ mntmShow.addActionListener(a -> {
|
|
|
+ if(clickedObject==null)return;
|
|
|
+ networkTreeSettings.toggleVisibilityNonRecursive(clickedObject);
|
|
|
+ });
|
|
|
+ rightClick.add(mntmShow);
|
|
|
+
|
|
|
+
|
|
|
+ mntmShowRecursive.addActionListener(a -> {
|
|
|
+ if(clickedObject==null)return;
|
|
|
+ networkTreeSettings.toggleVisibilityOf(clickedObject);
|
|
|
+ });
|
|
|
+ rightClick.add(mntmShowRecursive);
|
|
|
+
|
|
|
mntmEdit.addActionListener(a->{
|
|
|
if(clickedObject == null)return;
|
|
|
if(clickedObject instanceof SmartDevice){
|
|
@@ -396,27 +431,79 @@ public class NetworkTreePanel extends JScrollPane implements Observer {
|
|
|
rightClick.setEnabled(false);
|
|
|
}else{
|
|
|
clickedObject = ((DefaultMutableTreeNode)clicked.getLastPathComponent()).getUserObject();
|
|
|
+ NetworkTreeNodeStatus status = networkTreeSettings.getStatusOfObject(clickedObject);
|
|
|
if(clickedObject instanceof SmartDevice){
|
|
|
//TODO: Specific actions
|
|
|
mntmEdit.setText("Edit Device");
|
|
|
mntmEdit.setEnabled(true);
|
|
|
mntmDelete.setText("Delete Device");
|
|
|
mntmDelete.setEnabled(true);
|
|
|
+
|
|
|
+ mntmExpand.setText("Expand");
|
|
|
+ mntmExpand.setEnabled(false);
|
|
|
+ if(status.isVisible()){
|
|
|
+ mntmShow.setText("Hide");
|
|
|
+ mntmShowRecursive.setText("Hide recursive");
|
|
|
+ }else{
|
|
|
+ mntmShow.setText("Show");
|
|
|
+ mntmShowRecursive.setText("Show recursive");
|
|
|
+ }
|
|
|
+ mntmShow.setEnabled(true);
|
|
|
+ mntmShowRecursive.setEnabled(false);
|
|
|
} else if(clickedObject instanceof Connection){
|
|
|
mntmEdit.setText("Edit Connection");
|
|
|
mntmEdit.setEnabled(true);
|
|
|
mntmDelete.setText("Delete Connection");
|
|
|
mntmDelete.setEnabled(true);
|
|
|
+
|
|
|
+ if(status.isExpanded()){
|
|
|
+ mntmExpand.setText("Collapse");
|
|
|
+ }else{
|
|
|
+ mntmExpand.setText("Expand");
|
|
|
+ }
|
|
|
+ mntmExpand.setEnabled(true);
|
|
|
+ if(status.isVisible()){
|
|
|
+ mntmShowRecursive.setText("Hide recursive");
|
|
|
+ mntmShow.setText("Hide");
|
|
|
+ }else{
|
|
|
+ mntmShowRecursive.setText("Show recursive");
|
|
|
+ mntmShow.setText("Show");
|
|
|
+ }
|
|
|
+ mntmShowRecursive.setEnabled(true);
|
|
|
+ mntmShow.setEnabled(true);
|
|
|
}else if(clickedObject instanceof Link){
|
|
|
mntmEdit.setText("Edit Link");
|
|
|
mntmEdit.setEnabled(true);
|
|
|
mntmDelete.setText("Delete Link");
|
|
|
mntmDelete.setEnabled(true);
|
|
|
+
|
|
|
+ if(status.isExpanded()){
|
|
|
+ mntmExpand.setText("Collapse");
|
|
|
+ }else{
|
|
|
+ mntmExpand.setText("Expand");
|
|
|
+ }
|
|
|
+ mntmExpand.setEnabled(true);
|
|
|
+ if(status.isVisible()){
|
|
|
+ mntmShow.setText("Hide");
|
|
|
+ mntmShowRecursive.setText("Hide recursive");
|
|
|
+ }else{
|
|
|
+ mntmShow.setText("Show");
|
|
|
+ mntmShowRecursive.setText("Show recursive");
|
|
|
+ }
|
|
|
+ mntmShow.setEnabled(true);
|
|
|
+ mntmShowRecursive.setEnabled(true);
|
|
|
}else{
|
|
|
mntmEdit.setText("Edit");
|
|
|
mntmEdit.setEnabled(false);
|
|
|
mntmDelete.setText("Delete");
|
|
|
mntmDelete.setEnabled(false);
|
|
|
+
|
|
|
+ mntmExpand.setText("Expand");
|
|
|
+ mntmExpand.setEnabled(false);
|
|
|
+ mntmShow.setText("Show");
|
|
|
+ mntmShow.setEnabled(false);
|
|
|
+ mntmShowRecursive.setText("Show recursive");
|
|
|
+ mntmShowRecursive.setEnabled(false);
|
|
|
}
|
|
|
|
|
|
rightClick.show(this,e.getX(), e.getY());
|