~tapaal-contributor/tapaal/display-shared-places-transitions-1879126

« back to all changes in this revision

Viewing changes to src/pipe/gui/widgets/PlaceEditorPanel.java

  • Committer: Jiri Srba
  • Date: 2020-04-28 19:15:28 UTC
  • mfrom: (998.2.376 testbranch)
  • Revision ID: srba@cs.aau.dk-20200428191528-3xxjqa1r4jcob5ur
merged in lp:~yrke/tapaal/testbranch doing majour refactoring of the GUI

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
import java.awt.GridBagConstraints;
6
6
import java.awt.GridBagLayout;
7
7
import java.awt.Insets;
8
 
import java.awt.event.ActionEvent;
9
 
import java.awt.event.ActionListener;
10
8
import java.awt.event.ItemEvent;
11
 
import java.awt.event.ItemListener;
12
9
import java.util.Arrays;
13
10
import java.util.Collection;
14
 
import java.util.Collections;
15
 
import java.util.Comparator;
16
 
import java.util.HashMap;
17
11
import java.util.Set;
18
12
import java.util.Vector;
19
13
 
26
20
import javax.swing.JRadioButton;
27
21
import javax.swing.JRootPane;
28
22
import javax.swing.JSpinner;
29
 
import javax.swing.event.ChangeEvent;
30
23
import javax.swing.event.ChangeListener;
31
24
 
32
 
import pipe.dataLayer.DataLayer;
 
25
import net.tapaal.swinghelpers.CustomJSpinner;
 
26
import net.tapaal.swinghelpers.WidthAdjustingComboBox;
33
27
import pipe.dataLayer.Template;
34
28
import pipe.gui.CreateGui;
35
29
import pipe.gui.Pipe;
36
 
import pipe.gui.graphicElements.PetriNetObject;
37
 
import pipe.gui.graphicElements.Place;
38
30
import pipe.gui.graphicElements.tapn.TimedPlaceComponent;
39
31
import dk.aau.cs.gui.Context;
40
32
import dk.aau.cs.gui.undo.ChangedInvariantCommand;
52
44
import dk.aau.cs.model.tapn.LocalTimedPlace;
53
45
import dk.aau.cs.model.tapn.SharedPlace;
54
46
import dk.aau.cs.model.tapn.TimeInvariant;
55
 
import dk.aau.cs.model.tapn.TimedArcPetriNet;
56
47
import dk.aau.cs.model.tapn.TimedInhibitorArc;
57
48
import dk.aau.cs.model.tapn.TimedInputArc;
58
49
import dk.aau.cs.model.tapn.TimedOutputArc;
125
116
                okButton.setMinimumSize(new java.awt.Dimension(100, 25));
126
117
                okButton.setPreferredSize(new java.awt.Dimension(100, 25));
127
118
 
128
 
                okButton.addActionListener(new java.awt.event.ActionListener() {
129
 
                        public void actionPerformed(java.awt.event.ActionEvent evt) {
130
 
                                if(doOK()){
131
 
                                        exit();
132
 
                                }
 
119
                okButton.addActionListener(evt -> {
 
120
                        if(doOK()){
 
121
                                exit();
133
122
                        }
134
123
                });
135
124
                rootPane.setDefaultButton(okButton);
139
128
                cancelButton.setMaximumSize(new java.awt.Dimension(100, 25));
140
129
                cancelButton.setMinimumSize(new java.awt.Dimension(100, 25));
141
130
                cancelButton.setPreferredSize(new java.awt.Dimension(100, 25));
142
 
                cancelButton.addActionListener(new java.awt.event.ActionListener() {
143
 
                        public void actionPerformed(java.awt.event.ActionEvent evt) {
144
 
                                exit();
145
 
                        }
146
 
                });
 
131
                cancelButton.addActionListener(evt -> exit());
147
132
 
148
133
                gridBagConstraints = new java.awt.GridBagConstraints();
149
134
                gridBagConstraints.gridx = 0;
180
165
                        sharedPlaces.add(place.underlyingPlace());
181
166
                }
182
167
 
183
 
                Collections.sort(sharedPlaces, new Comparator<TimedPlace>() {
184
 
                        public int compare(TimedPlace o1, TimedPlace o2) {
185
 
                                return o1.name().compareToIgnoreCase(o2.name());
186
 
                        }
187
 
                });
 
168
                sharedPlaces.sort((o1, o2) -> o1.name().compareToIgnoreCase(o2.name()));
188
169
                sharedPlacesComboBox.setModel(new DefaultComboBoxModel(sharedPlaces));
189
170
                if(place.underlyingPlace().isShared()) {
190
171
 
231
212
                basicPropertiesPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Place"));
232
213
 
233
214
                sharedCheckBox = new JCheckBox("Shared");
234
 
                sharedCheckBox.addActionListener(new ActionListener(){
235
 
                        public void actionPerformed(ActionEvent arg0) {
236
 
                                JCheckBox box = (JCheckBox)arg0.getSource();
237
 
                                if(box.isSelected()){
238
 
                                        switchToNameDropDown();
239
 
                                        makeSharedButton.setEnabled(false);
240
 
                                }else{
241
 
                                        switchToNameTextField();
242
 
                                        nameTextField.setText(place.underlyingPlace().isShared()? CreateGui.getDrawingSurface().getNameGenerator().getNewPlaceName(context.activeModel()) : place.getName());
243
 
                                        makeSharedButton.setEnabled(true);
244
 
                                }
245
 
                        }               
 
215
                sharedCheckBox.addActionListener(arg0 -> {
 
216
                        JCheckBox box = (JCheckBox)arg0.getSource();
 
217
                        if(box.isSelected()){
 
218
                                switchToNameDropDown();
 
219
                                makeSharedButton.setEnabled(false);
 
220
                        }else{
 
221
                                switchToNameTextField();
 
222
                                nameTextField.setText(place.underlyingPlace().isShared()? CreateGui.getDrawingSurface().getNameGenerator().getNewPlaceName(context.activeModel()) : place.getName());
 
223
                                makeSharedButton.setEnabled(true);
 
224
                        }
246
225
                });
247
226
 
248
227
                GridBagConstraints gridBagConstraints = new java.awt.GridBagConstraints();
258
237
                makeSharedButton.setMinimumSize(new java.awt.Dimension(110, 25));
259
238
                makeSharedButton.setPreferredSize(new java.awt.Dimension(110, 25));
260
239
                
261
 
                makeSharedButton.addActionListener(new java.awt.event.ActionListener() {
262
 
                        public void actionPerformed(java.awt.event.ActionEvent evt) {
263
 
                                makeNewShared = true;
264
 
                                if(doOK()){
265
 
                                        setupInitialState();
266
 
                                        makeSharedButton.setEnabled(false);
267
 
                                        sharedCheckBox.setEnabled(true);
268
 
                                        sharedCheckBox.setSelected(true);
269
 
                                        switchToNameDropDown();
270
 
                                        sharedPlacesComboBox.setSelectedItem(place.underlyingPlace());
271
 
                                }
272
 
                                makeNewShared = false;
 
240
                makeSharedButton.addActionListener(evt -> {
 
241
                        makeNewShared = true;
 
242
                        if(doOK()){
 
243
                                setupInitialState();
 
244
                                makeSharedButton.setEnabled(false);
 
245
                                sharedCheckBox.setEnabled(true);
 
246
                                sharedCheckBox.setSelected(true);
 
247
                                switchToNameDropDown();
 
248
                                sharedPlacesComboBox.setSelectedItem(place.underlyingPlace());
273
249
                        }
 
250
                        makeNewShared = false;
274
251
                });
275
252
                
276
253
                gridBagConstraints = new java.awt.GridBagConstraints();
295
272
 
296
273
                sharedPlacesComboBox.setPreferredSize(new Dimension(290,27));
297
274
 
298
 
                sharedPlacesComboBox.addItemListener(new ItemListener() {
299
 
                        public void itemStateChanged(ItemEvent e) {
300
 
                                SharedPlace place = (SharedPlace)e.getItem();
301
 
                                if(place.getComponentsUsingThisPlace().size() > 0){
302
 
                                        setMarking(place.numberOfTokens());
303
 
                                }
304
 
                                setInvariantControlsBasedOn(place);
 
275
                sharedPlacesComboBox.addItemListener(e -> {
 
276
                        SharedPlace place = (SharedPlace)e.getItem();
 
277
                        if(place.getComponentsUsingThisPlace().size() > 0){
 
278
                                setMarking(place.numberOfTokens());
305
279
                        }
 
280
                        setInvariantControlsBasedOn(place);
306
281
                });
307
282
 
308
283
                markingLabel = new javax.swing.JLabel("Marking:");
365
340
                invRelationConstant = new JComboBox(new String[] { "<=", "<" });
366
341
                //invariantSpinner = new JSpinner(new SpinnerNumberModel(0, 0, Integer.MAX_VALUE, 1));
367
342
                invariantSpinner = new CustomJSpinner(0, okButton);
368
 
                invariantSpinner.addChangeListener(new ChangeListener() {
369
 
                        public void stateChanged(ChangeEvent e) {
370
 
                                if(!invariantInf.isSelected()){
371
 
                                        if ((Integer) invariantSpinner.getValue() < 1) {
372
 
                                                invRelationNormal.setModel(new DefaultComboBoxModel(new String[] { "<=" }));
373
 
                                                invRelationNormal.setSelectedItem("<=");
374
 
                                        } else if (invRelationNormal.getModel().getSize() == 1) {
375
 
                                                invRelationNormal.setModel(new DefaultComboBoxModel(new String[] { "<=", "<" }));
376
 
                                        }
 
343
                invariantSpinner.addChangeListener(e -> {
 
344
                        if(!invariantInf.isSelected()){
 
345
                                if ((Integer) invariantSpinner.getValue() < 1) {
 
346
                                        invRelationNormal.setModel(new DefaultComboBoxModel<>(new String[] { "<=" }));
 
347
                                        invRelationNormal.setSelectedItem("<=");
 
348
                                } else if (invRelationNormal.getModel().getSize() == 1) {
 
349
                                        invRelationNormal.setModel(new DefaultComboBoxModel<>(new String[] { "<=", "<" }));
377
350
                                }
378
351
                        }
379
 
 
380
352
                });
381
353
 
382
354
                GridBagConstraints gbc = new GridBagConstraints();
404
376
                invariantGroup.add(invariantSpinner, gbc);
405
377
 
406
378
                invariantInf = new JCheckBox("inf");
407
 
                invariantInf.addActionListener(new ActionListener() {
408
 
 
409
 
                        public void actionPerformed(ActionEvent arg0) {
410
 
                                if(!isUrgencyOK()){
411
 
                                        invariantInf.setSelected(true);
412
 
                                        return;
413
 
                                }
414
 
                                if (!invariantInf.isSelected()) {
415
 
                                        invRelationNormal.setEnabled(true);
416
 
                                        invariantSpinner.setEnabled(true);
417
 
                                        invRelationNormal.setSelectedItem("<=");
418
 
                                        if ((Integer) invariantSpinner.getValue() < 1) {
419
 
                                                invRelationNormal.setModel(new DefaultComboBoxModel(new String[] { "<=" }));
420
 
                                        } else {
421
 
                                                invRelationNormal.setModel(new DefaultComboBoxModel(new String[] { "<=", "<" }));
422
 
                                        }
 
379
                invariantInf.addActionListener(arg0 -> {
 
380
                        if(!isUrgencyOK()){
 
381
                                invariantInf.setSelected(true);
 
382
                                return;
 
383
                        }
 
384
                        if (!invariantInf.isSelected()) {
 
385
                                invRelationNormal.setEnabled(true);
 
386
                                invariantSpinner.setEnabled(true);
 
387
                                invRelationNormal.setSelectedItem("<=");
 
388
                                if ((Integer) invariantSpinner.getValue() < 1) {
 
389
                                        invRelationNormal.setModel(new DefaultComboBoxModel(new String[] { "<=" }));
423
390
                                } else {
424
 
                                        invRelationNormal.setEnabled(false);
425
 
                                        invariantSpinner.setEnabled(false);
426
 
                                        invRelationNormal.setSelectedItem("<");
427
 
                                        invRelationNormal.setModel(new DefaultComboBoxModel(new String[] { "<" }));
 
391
                                        invRelationNormal.setModel(new DefaultComboBoxModel(new String[] { "<=", "<" }));
428
392
                                }
429
 
 
 
393
                        } else {
 
394
                                invRelationNormal.setEnabled(false);
 
395
                                invariantSpinner.setEnabled(false);
 
396
                                invRelationNormal.setSelectedItem("<");
 
397
                                invRelationNormal.setModel(new DefaultComboBoxModel(new String[] { "<" }));
430
398
                        }
431
399
 
432
400
                });
445
413
                invConstantsComboBox.setMaximumRowCount(20);
446
414
                //      invConstantsComboBox.setMinimumSize(new Dimension(100, 30));
447
415
                invConstantsComboBox.setPreferredSize(new Dimension(230, 30));
448
 
                invConstantsComboBox.addItemListener(new ItemListener() {
449
 
                        public void itemStateChanged(ItemEvent e) {
450
 
                                if (e.getStateChange() == ItemEvent.SELECTED) {
451
 
                                        setRelationModelForConstants();
452
 
                                }
 
416
                invConstantsComboBox.addItemListener(e -> {
 
417
                        if (e.getStateChange() == ItemEvent.SELECTED) {
 
418
                                setRelationModelForConstants();
453
419
                        }
454
420
                });
455
421
 
460
426
                invariantGroup.add(invConstantsComboBox, gbc);
461
427
 
462
428
                normalInvRadioButton = new JRadioButton("Normal");
463
 
                normalInvRadioButton.addActionListener(new ActionListener() {
464
 
                        public void actionPerformed(ActionEvent e) {
465
 
                                disableInvariantComponents();
466
 
                                enableNormalInvariantComponents();
467
 
                        }
 
429
                normalInvRadioButton.addActionListener(e -> {
 
430
                        disableInvariantComponents();
 
431
                        enableNormalInvariantComponents();
468
432
                });
469
433
 
470
434
                constantInvRadioButton = new JRadioButton("Constant");
471
 
                constantInvRadioButton.addActionListener(new ActionListener() {
472
 
                        public void actionPerformed(ActionEvent e) {
473
 
                                disableInvariantComponents();
474
 
                                enableConstantInvariantComponents();
475
 
                        }
 
435
                constantInvRadioButton.addActionListener(e -> {
 
436
                        disableInvariantComponents();
 
437
                        enableConstantInvariantComponents();
476
438
                });
477
439
                if (constants.isEmpty()){
478
440
                        constantInvRadioButton.setEnabled(false);
607
569
 
608
570
                SharedPlace selected = (SharedPlace)sharedPlacesComboBox.getSelectedItem();
609
571
                setInvariantControlsBasedOn(selected);
610
 
                if(((SharedPlace) selected).getComponentsUsingThisPlace().size() > 0){
 
572
                if(selected.getComponentsUsingThisPlace().size() > 0){
611
573
                        setMarking(selected.numberOfTokens());
612
574
                }
613
575
        }
790
752
        private javax.swing.JPanel basicPropertiesPanel;
791
753
        private javax.swing.JPanel timeInvariantPanel;
792
754
        private JPanel invariantGroup;
793
 
        private JComboBox invRelationNormal;
794
 
        private JComboBox invRelationConstant;
 
755
        private JComboBox<String> invRelationNormal;
 
756
        private JComboBox<String> invRelationConstant;
795
757
        private JSpinner invariantSpinner;
796
758
        private JCheckBox invariantInf;
797
 
        private JComboBox invConstantsComboBox;
 
759
        private JComboBox<String> invConstantsComboBox;
798
760
        private JRadioButton normalInvRadioButton;
799
761
        private JRadioButton constantInvRadioButton;
800
762
}