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;
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;
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));
128
okButton.addActionListener(new java.awt.event.ActionListener() {
129
public void actionPerformed(java.awt.event.ActionEvent evt) {
119
okButton.addActionListener(evt -> {
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) {
131
cancelButton.addActionListener(evt -> exit());
148
133
gridBagConstraints = new java.awt.GridBagConstraints();
149
134
gridBagConstraints.gridx = 0;
180
165
sharedPlaces.add(place.underlyingPlace());
183
Collections.sort(sharedPlaces, new Comparator<TimedPlace>() {
184
public int compare(TimedPlace o1, TimedPlace o2) {
185
return o1.name().compareToIgnoreCase(o2.name());
168
sharedPlaces.sort((o1, o2) -> o1.name().compareToIgnoreCase(o2.name()));
188
169
sharedPlacesComboBox.setModel(new DefaultComboBoxModel(sharedPlaces));
189
170
if(place.underlyingPlace().isShared()) {
231
212
basicPropertiesPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Place"));
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);
241
switchToNameTextField();
242
nameTextField.setText(place.underlyingPlace().isShared()? CreateGui.getDrawingSurface().getNameGenerator().getNewPlaceName(context.activeModel()) : place.getName());
243
makeSharedButton.setEnabled(true);
215
sharedCheckBox.addActionListener(arg0 -> {
216
JCheckBox box = (JCheckBox)arg0.getSource();
217
if(box.isSelected()){
218
switchToNameDropDown();
219
makeSharedButton.setEnabled(false);
221
switchToNameTextField();
222
nameTextField.setText(place.underlyingPlace().isShared()? CreateGui.getDrawingSurface().getNameGenerator().getNewPlaceName(context.activeModel()) : place.getName());
223
makeSharedButton.setEnabled(true);
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));
261
makeSharedButton.addActionListener(new java.awt.event.ActionListener() {
262
public void actionPerformed(java.awt.event.ActionEvent evt) {
263
makeNewShared = true;
266
makeSharedButton.setEnabled(false);
267
sharedCheckBox.setEnabled(true);
268
sharedCheckBox.setSelected(true);
269
switchToNameDropDown();
270
sharedPlacesComboBox.setSelectedItem(place.underlyingPlace());
272
makeNewShared = false;
240
makeSharedButton.addActionListener(evt -> {
241
makeNewShared = true;
244
makeSharedButton.setEnabled(false);
245
sharedCheckBox.setEnabled(true);
246
sharedCheckBox.setSelected(true);
247
switchToNameDropDown();
248
sharedPlacesComboBox.setSelectedItem(place.underlyingPlace());
250
makeNewShared = false;
276
253
gridBagConstraints = new java.awt.GridBagConstraints();
296
273
sharedPlacesComboBox.setPreferredSize(new Dimension(290,27));
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());
304
setInvariantControlsBasedOn(place);
275
sharedPlacesComboBox.addItemListener(e -> {
276
SharedPlace place = (SharedPlace)e.getItem();
277
if(place.getComponentsUsingThisPlace().size() > 0){
278
setMarking(place.numberOfTokens());
280
setInvariantControlsBasedOn(place);
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[] { "<=", "<" }));
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[] { "<=", "<" }));
382
354
GridBagConstraints gbc = new GridBagConstraints();
404
376
invariantGroup.add(invariantSpinner, gbc);
406
378
invariantInf = new JCheckBox("inf");
407
invariantInf.addActionListener(new ActionListener() {
409
public void actionPerformed(ActionEvent arg0) {
411
invariantInf.setSelected(true);
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[] { "<=" }));
421
invRelationNormal.setModel(new DefaultComboBoxModel(new String[] { "<=", "<" }));
379
invariantInf.addActionListener(arg0 -> {
381
invariantInf.setSelected(true);
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[] { "<=" }));
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[] { "<=", "<" }));
394
invRelationNormal.setEnabled(false);
395
invariantSpinner.setEnabled(false);
396
invRelationNormal.setSelectedItem("<");
397
invRelationNormal.setModel(new DefaultComboBoxModel(new String[] { "<" }));
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();
416
invConstantsComboBox.addItemListener(e -> {
417
if (e.getStateChange() == ItemEvent.SELECTED) {
418
setRelationModelForConstants();
460
426
invariantGroup.add(invConstantsComboBox, gbc);
462
428
normalInvRadioButton = new JRadioButton("Normal");
463
normalInvRadioButton.addActionListener(new ActionListener() {
464
public void actionPerformed(ActionEvent e) {
465
disableInvariantComponents();
466
enableNormalInvariantComponents();
429
normalInvRadioButton.addActionListener(e -> {
430
disableInvariantComponents();
431
enableNormalInvariantComponents();
470
434
constantInvRadioButton = new JRadioButton("Constant");
471
constantInvRadioButton.addActionListener(new ActionListener() {
472
public void actionPerformed(ActionEvent e) {
473
disableInvariantComponents();
474
enableConstantInvariantComponents();
435
constantInvRadioButton.addActionListener(e -> {
436
disableInvariantComponents();
437
enableConstantInvariantComponents();
477
439
if (constants.isEmpty()){
478
440
constantInvRadioButton.setEnabled(false);
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());
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;