diff --git a/src/main/java/ui/tmldd/TMLArchiDiagramPanel.java b/src/main/java/ui/tmldd/TMLArchiDiagramPanel.java index b038b5d36c17bf57bde14f7b3a70ded6582f0daa..882c92a18408e0104f9ba21fc5730d57d059c685 100755 --- a/src/main/java/ui/tmldd/TMLArchiDiagramPanel.java +++ b/src/main/java/ui/tmldd/TMLArchiDiagramPanel.java @@ -60,17 +60,15 @@ import java.util.Vector; */ public class TMLArchiDiagramPanel extends TDiagramPanel implements TDPWithAttributes { - public static final int VIEW_ALL = 0; - public static final int VIEW_ARCHITECTURE_ONLY = 1; - public static final int VIEW_TASK_MAPPING = 2; - public static final int VIEW_CHANNEL_MAPPING = 3; + public static final int VIEW_TASK_MAPPING = 16; + public static final int VIEW_CHANNEL_MAPPING = 8; public static final int VIEW_COMM_PATTERN = 4; - public static final int VIEW_COMM_PATTERN_MAPPING = 5; - public static final int VIEW_SECURITY_MAPPING = 6; + public static final int VIEW_PORT_INTERFACE = 2; + public static final int VIEW_SECURITY_MAPPING = 1; private int masterClockFrequency = 200; // in MHz - protected int view = VIEW_ALL; + protected int view = 31; @@ -410,23 +408,41 @@ public class TMLArchiDiagramPanel extends TDiagramPanel implements TDPWithAttrib } public boolean inCurrentView(TGComponent tgc) { - switch(view) { - case VIEW_ALL: - return true; - case VIEW_ARCHITECTURE_ONLY: - return (tgc instanceof TMLArchiElementInterface); - case VIEW_TASK_MAPPING: - return (tgc instanceof TMLArchiElementInterface) || (tgc instanceof TMLArchiTaskInterface); - case VIEW_CHANNEL_MAPPING: - return (tgc instanceof TMLArchiElementInterface) || (tgc instanceof TMLArchiChannelInterface); - case VIEW_COMM_PATTERN: - return (tgc instanceof TMLArchiElementInterface) || (tgc instanceof TMLArchiCPInterface); - case VIEW_COMM_PATTERN_MAPPING: - return (tgc instanceof TMLArchiElementInterface) || (tgc instanceof TMLArchiCPInterface) || (tgc instanceof TMLArchiPortInterface); - case VIEW_SECURITY_MAPPING: - return (tgc instanceof TMLArchiElementInterface) || (tgc instanceof TMLArchiSecurityInterface) || (tgc instanceof TMLArchiTaskInterface); - default: - return true; - } + + boolean res = (tgc instanceof TMLArchiElementInterface); + int tmp = view; + + if (view >= VIEW_TASK_MAPPING) + { + res = res || (tgc instanceof TMLArchiTaskInterface); + view -= 16; + } + + if (view >= VIEW_CHANNEL_MAPPING) + { + res = res || (tgc instanceof TMLArchiChannelInterface); + view -= 8; + } + + if (view >= VIEW_COMM_PATTERN) + { + res = res || (tgc instanceof TMLArchiCPInterface); + view -= 4; + } + + if (view >= VIEW_PORT_INTERFACE) + { + res = res || (tgc instanceof TMLArchiPortInterface); + view -= 2; + } + + if (view >= VIEW_SECURITY_MAPPING) + { + res = res || (tgc instanceof TMLArchiSecurityInterface); + view -= 1; + } + + view = tmp; + return res; } }//End of class diff --git a/src/main/java/ui/tmldd/TMLArchiDiagramToolBar.java b/src/main/java/ui/tmldd/TMLArchiDiagramToolBar.java index ac1070c2493207316c65302876f32c4f38234969..00af19aaa6f427b7287a778c8ee7a16781ef266e 100755 --- a/src/main/java/ui/tmldd/TMLArchiDiagramToolBar.java +++ b/src/main/java/ui/tmldd/TMLArchiDiagramToolBar.java @@ -37,9 +37,6 @@ * knowledge of the CeCILL license and that you accept its terms. */ - - - package ui.tmldd; import myutil.TraceManager; @@ -48,6 +45,9 @@ import ui.TGUIAction; import ui.TToolBar; import javax.swing.*; + +import java.awt.BorderLayout; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -55,14 +55,16 @@ import java.awt.event.ActionListener; * Class TMLArchiDiagramToolBar * Implements the toolbar to be used in conjunction with the panel of a TML Architecture diagram * Creation: 18/09/2007 - * @version 1.0 08/09/2017 + * @version 1.0 18/09/2007 * @author Ludovic APVRILLE * @see ui.cd.TClassDiagramPanel */ public class TMLArchiDiagramToolBar extends TToolBar implements ActionListener { - protected JComboBox<String> box; - protected static String[] viewInfos = { "View all", "View architecture only", "View task mapping", "View channel mapping", "View Comm. Pattern", "View Comm. Pattern mapping", "View security mapping"}; + protected JMenuBar box; + protected JMenu menu; + protected JCheckBoxMenuItem m1, m2, m3, m4, m5; + protected static String[] viewInfos = {"View task mapping", "View channel mapping", "View Comm. Pattern mapping", "View Port Interface", "View security mapping"}; protected TMLArchiDiagramPanel panel; public TMLArchiDiagramToolBar(MainGUI _mgui) { @@ -76,7 +78,6 @@ public class TMLArchiDiagramToolBar extends TToolBar implements ActionListener mgui.actions[TGUIAction.TMLARCHI_LINK].setEnabled(b); mgui.actions[TGUIAction.TMLARCHI_CPUNODE].setEnabled(b); mgui.actions[TGUIAction.TMLARCHI_HWANODE].setEnabled(b); - mgui.actions[TGUIAction.TMLARCHI_CAMSNODE].setEnabled(b); //ajout CD mgui.actions[TGUIAction.TMLARCHI_BUSNODE].setEnabled(b); mgui.actions[TGUIAction.TMLARCHI_CPNODE].setEnabled(b); mgui.actions[TGUIAction.TMLARCHI_BRIDGENODE].setEnabled(b); @@ -125,8 +126,6 @@ public class TMLArchiDiagramToolBar extends TToolBar implements ActionListener button.addMouseListener(mgui.mouseHandler); button = this.add(mgui.actions[TGUIAction.TMLARCHI_HWANODE]); button.addMouseListener(mgui.mouseHandler); - button = this.add(mgui.actions[TGUIAction.TMLARCHI_CAMSNODE]); //ajout CD - button.addMouseListener(mgui.mouseHandler); button = this.add(mgui.actions[TGUIAction.TMLARCHI_ARTIFACT]); button.addMouseListener(mgui.mouseHandler); @@ -143,26 +142,27 @@ public class TMLArchiDiagramToolBar extends TToolBar implements ActionListener button.addMouseListener(mgui.mouseHandler); button = this.add(mgui.actions[TGUIAction.TMLARCHI_MEMORYNODE]); button.addMouseListener(mgui.mouseHandler); - this.addSeparator(); + this.addSeparator(); - button = this.add(mgui.actions[TGUIAction.TMLARCHI_COMMUNICATION_ARTIFACT]); + button = this.add(mgui.actions[TGUIAction.TMLARCHI_COMMUNICATION_ARTIFACT]); button.addMouseListener(mgui.mouseHandler); /*button = this.add(mgui.actions[TGUIAction.TMLARCHI_EVENT_ARTIFACT]); button.addMouseListener(mgui.mouseHandler);*/ if (MainGUI.experimentalOn) { - this.addSeparator(); + this.addSeparator(); button = this.add(mgui.actions[TGUIAction.TMLARCHI_CPNODE]); button.addMouseListener(mgui.mouseHandler); - button = this.add(mgui.actions[TGUIAction.TMLARCHI_PORT_ARTIFACT]); - button.addMouseListener(mgui.mouseHandler); + button = this.add(mgui.actions[TGUIAction.TMLARCHI_PORT_ARTIFACT]); + button.addMouseListener(mgui.mouseHandler); } - this.addSeparator(); + + this.addSeparator(); button = this.add(mgui.actions[TGUIAction.TMLARCHI_KEY]); button.addMouseListener(mgui.mouseHandler); - button = this.add(mgui.actions[TGUIAction.TMLARCHI_FIREWALL]); + button = this.add(mgui.actions[TGUIAction.TMLARCHI_FIREWALL]); button.addMouseListener(mgui.mouseHandler); @@ -175,31 +175,69 @@ public class TMLArchiDiagramToolBar extends TToolBar implements ActionListener button = this.add(mgui.actions[TGUIAction.ACT_TOGGLE_DIPLO_ID]); button.addMouseListener(mgui.mouseHandler); - setPluginButtons("TMLArchiDiagramPanel"); + setPluginButtons("TMLArchiDiagramPanel"); this.addSeparator(); if (viewInfos == null) { TraceManager.addDev("null viewInfos"); } - box = new JComboBox<>(viewInfos); + + //Issue #68: Review Filters of Diagram Elements + box = new JMenuBar(); + menu = new JMenu("Edit configuration view"); + + m1 = new JCheckBoxMenuItem(viewInfos[0], true); + m1.addActionListener(this); + m2 = new JCheckBoxMenuItem(viewInfos[1], true); + m2.addActionListener(this); + m3 = new JCheckBoxMenuItem(viewInfos[2], true); + m3.addActionListener(this); + m4 = new JCheckBoxMenuItem(viewInfos[3], true); + m4.addActionListener(this); + m5 = new JCheckBoxMenuItem(viewInfos[4], true); + m5.addActionListener(this); + + + menu.add(m1); + menu.add(m2); + menu.add(m3); + menu.add(m4); + menu.add(m5); + + box.add(menu); + this.add(box); - box.addActionListener(this); - - } public void setPanel(TMLArchiDiagramPanel _panel) { panel = _panel; } - + @Override public void actionPerformed(ActionEvent e) { - super.actionPerformed(e); - if (e.getSource() == box) { + super.actionPerformed(e); + + //if (e.getSource() == box) { if (panel != null) { - panel.setCurrentView(box.getSelectedIndex()); + int res = 0; + + //Check if "View Comm. Pattern mapping" is check to enable "Port Interface" option + if (!((JCheckBoxMenuItem) box.getMenu(0).getItem(2)).getState()) + ((JCheckBoxMenuItem)box.getMenu(0).getItem(3)).setEnabled(false); + else + ((JCheckBoxMenuItem)box.getMenu(0).getItem(3)).setEnabled(true); + + //Verify checked options + for (int i = 0; i < box.getMenu(0).getItemCount(); i++) { + JMenuItem j = box.getMenu(0).getItem(i); + JCheckBoxMenuItem ci = (JCheckBoxMenuItem) j; + res *= 2; + if (ci.isEnabled() && ci.getState()) + res++; + } + + panel.setCurrentView(res); } - } + //} } - } // Class