Skip to content

Package: PopupMenu

PopupMenu

nameinstructionbranchcomplexitylinemethod
PopupMenu(ConfigurationGraph)
M: 0 C: 59
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 10
100%
M: 0 C: 1
100%
adapter(NetworkAdapter)
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
addRenameAndAdapter()
M: 13 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
addRenameAndDelete()
M: 13 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
addRenameAndDeleteAndAdapter()
M: 9 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
configRouter(ConfigRouter)
M: 9 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
getPopup(List)
M: 47 C: 0
0%
M: 8 C: 0
0%
M: 5 C: 0
0%
M: 11 C: 0
0%
M: 1 C: 0
0%
hardwareEdge(HardwareEdge)
M: 1 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
host(Host)
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
internet(Internet)
M: 15 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 4 C: 0
0%
M: 1 C: 0
0%
networkCable(NetworkCable)
M: 7 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
router(Router)
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
sWitch(Switch)
M: 9 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
slot(Slot)
M: 7 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%

Coverage

1: package networkconfigurator;
2:
3: import java.util.Iterator;
4: import java.util.List;
5:
6: import javax.swing.Action;
7: import javax.swing.JPopupMenu;
8:
9: import networkconfigurator.actions.ChangeConnectionType;
10: import networkconfigurator.actions.ConnectAction;
11: import networkconfigurator.actions.DeleteAction;
12: import networkconfigurator.actions.NewNetworkAdapterAction;
13: import networkconfigurator.actions.NewSlotAction;
14: import networkconfigurator.actions.RenameAction;
15: import networkconfigurator.item.ConfigRouter;
16: import networkconfigurator.item.HardwareEdge;
17: import networkconfigurator.item.Host;
18: import networkconfigurator.item.Internet;
19: import networkconfigurator.item.Item;
20: import networkconfigurator.item.ItemVisitor;
21: import networkconfigurator.item.NetworkAdapter;
22: import networkconfigurator.item.NetworkCable;
23: import networkconfigurator.item.Router;
24: import networkconfigurator.item.Slot;
25: import networkconfigurator.item.Switch;
26:
27: /**
28: * The popup menu.
29: *
30: * @author Erik Arand
31: *
32: */
33: public class PopupMenu implements ItemVisitor {
34:
35:         /**
36:          * pop-up menu for the right click events.
37:          */
38:         private final JPopupMenu popup = new JPopupMenu();
39:         /**
40:          * The Graph.
41:          */
42:         private final ConfigurationGraph graph;
43:         /**
44:          * Action for rename all selected nodes.
45:          */
46:         private final Action rename;
47:         /**
48:          * Action for connecting all selected nodes.
49:          */
50:         private final Action connect;
51:         /**
52:          * Action for deleting selected nodes.
53:          */
54:         private final Action delete;
55:         /**
56:          * Action for adding a new NetworkAdapter.
57:          */
58:         private final Action addAdapter;
59:         /**
60:          * Action for adding a new slot.
61:          */
62:         private final NewSlotAction addSlot;
63:         /**
64:          * action for changing the connecting type.
65:          */
66:         private final Action changeConnectingType;
67:
68:         /**
69:          * constructor.
70:          *
71:          * @param graph
72:          * the graph.
73:          */
74:         public PopupMenu(final ConfigurationGraph graph) {
75:                 this.graph = graph;
76:
77:                 rename = new RenameAction(NetworkconfiguratorConstants.RENAME, this.graph);
78:                 connect = new ConnectAction(NetworkconfiguratorConstants.CONNECT, this.graph);
79:                 delete = new DeleteAction(NetworkconfiguratorConstants.DELETE, this.graph);
80:                 addAdapter = new NewNetworkAdapterAction(NetworkconfiguratorConstants.ADD_NETWORK_ADAPTER,
81:                                 this.graph);
82:                 addSlot = new NewSlotAction(NetworkconfiguratorConstants.ADD_SLOT, this.graph);
83:                 changeConnectingType =
84:                                 new ChangeConnectionType(NetworkconfiguratorConstants.CHANGETYPE, this.graph);
85:         }
86:
87:         /**
88:          * Method for getting the Popup.
89:          *
90:          * @param selected
91:          * the selected Nodes.
92:          * @return the popups.
93:          */
94:         public JPopupMenu getPopup(final List<Item> selected) {
95:                 popup.removeAll();
96:•                if (selected.size() == 1) {
97:                         selected.get(0).accept(this);
98:•                } else if (selected.size() == 2) {
99:                         final Iterator<Item> iterator = selected.iterator();
100:                         final ConnectChecker connectChecker = new ConnectChecker();
101:•                        while (iterator.hasNext()) {
102:                                 iterator.next().accept(connectChecker);
103:                         }
104:•                        if (connectChecker.isConnectable()) {
105:                                 popup.add(connect);
106:                         }
107:                 }
108:                 return popup;
109:         }
110:
111:         @Override
112:         public void host(final Host host) {
113:                 addRenameAndDeleteAndAdapter();
114:         }
115:
116:         @Override
117:         public void router(final Router router) {
118:                 addRenameAndDeleteAndAdapter();
119:         }
120:
121:         @Override
122:         public void sWitch(final Switch sWitch) {
123:                 popup.add(addSlot);
124:                 addRenameAndDelete();
125:         }
126:
127:         @Override
128:         public void adapter(final NetworkAdapter adapter) {
129:                 addRenameAndDelete();
130:         }
131:
132:         @Override
133:         public void internet(final Internet internet) {
134:                 popup.add(addSlot);
135:                 popup.add(changeConnectingType);
136:                 addRenameAndDelete();
137:
138:         }
139:
140:         @Override
141:         public void configRouter(final ConfigRouter router) {
142:                 popup.add(changeConnectingType);
143:                 addRenameAndAdapter();
144:         }
145:
146:         @Override
147:         public void hardwareEdge(final HardwareEdge edge) {
148:         }
149:
150:         @Override
151:         public void networkCable(final NetworkCable edge) {
152:                 popup.add(delete);
153:         }
154:
155:         @Override
156:         public void slot(final Slot slot) {
157:                 popup.add(delete);
158:         }
159:
160:         /**
161:          * Adds Rename and Delete Option.
162:          */
163:         private void addRenameAndDelete() {
164:                 popup.add(rename);
165:                 popup.add(delete);
166:         }
167:
168:         /**
169:          * Adds Rename, Delete and add-Adapter Option.
170:          */
171:         private void addRenameAndDeleteAndAdapter() {
172:                 popup.add(addAdapter);
173:                 addRenameAndDelete();
174:         }
175:
176:         /**
177:          * Adds Rename and add-Adapter Option.
178:          */
179:         private void addRenameAndAdapter() {
180:                 popup.add(addAdapter);
181:                 popup.add(rename);
182:         }
183:
184:         /**
185:          * Nodevisitor that checks if there is a item in the selected Nodes list, that can not be
186:          * connected by the popup-menu.
187:          *
188:          * @author Erik Arand-Hfw416
189:          *
190:          */
191:         private final class ConnectChecker implements ItemVisitor {
192:                 /**
193:                  * Boolean if selected item is connectable.
194:                  */
195:                 private Boolean connectable = true;
196:
197:                 /**
198:                  * the Constructor.
199:                  */
200:                 ConnectChecker() {
201:                 }
202:
203:                 /**
204:                  * True if there was no unconnectable Item.
205:                  *
206:                  * @return connectable
207:                  */
208:                 public boolean isConnectable() {
209:                         return connectable;
210:                 }
211:
212:                 @Override
213:                 public void slot(final Slot slot) {
214:                 }
215:
216:                 @Override
217:                 public void sWitch(final Switch sWitch) {
218:                         connectable = false;
219:                 }
220:
221:                 @Override
222:                 public void router(final Router router) {
223:                         connectable = false;
224:                 }
225:
226:                 @Override
227:                 public void networkCable(final NetworkCable edge) {
228:                         connectable = false;
229:                 }
230:
231:                 @Override
232:                 public void internet(final Internet internet) {
233:                         connectable = false;
234:                 }
235:
236:                 @Override
237:                 public void host(final Host host) {
238:                         connectable = false;
239:                 }
240:
241:                 @Override
242:                 public void hardwareEdge(final HardwareEdge edge) {
243:                         connectable = false;
244:                 }
245:
246:                 @Override
247:                 public void configRouter(final ConfigRouter router) {
248:                         connectable = false;
249:                 }
250:
251:                 @Override
252:                 public void adapter(final NetworkAdapter adapter) {
253:
254:                 }
255:         }
256:
257: }