~tapaal-contributor/tapaal/change-export-batch-shortcut-1820012

« back to all changes in this revision

Viewing changes to src/dk/aau/cs/gui/DeleteSharedPlaceOrTransition.java

  • Committer: Kenneth Yrke Jørgensen
  • Date: 2019-03-13 07:17:48 UTC
  • mfrom: (989 tapaal)
  • mto: This revision was merged to the branch mainline in revision 991.
  • Revision ID: kenneth@yrke.dk-20190313071748-fm6dc00yy27un3xd
Merged with trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
7
7
import java.util.Hashtable;
8
8
import java.util.List;
9
9
import java.util.Map.Entry;
10
 
 
11
10
import javax.swing.JCheckBox;
12
11
import javax.swing.JLabel;
13
12
import javax.swing.JList;
14
13
import javax.swing.JOptionPane;
15
14
import javax.swing.JScrollPane;
16
 
 
17
15
import dk.aau.cs.TCTL.visitors.BooleanResult;
18
16
import dk.aau.cs.TCTL.visitors.ContainsSharedPlaceVisitor;
19
17
import dk.aau.cs.TCTL.visitors.ContainsSharedTransitionVisitor;
32
30
import dk.aau.cs.model.tapn.SharedTransition;
33
31
import dk.aau.cs.model.tapn.TimedPlace;
34
32
import dk.aau.cs.model.tapn.TimedTransition;
35
 
 
36
33
import pipe.dataLayer.TAPNQuery;
37
34
import pipe.dataLayer.Template;
38
35
import pipe.gui.CreateGui;
64
61
        SharedPlacesListModel sharedPlacesListModel;
65
62
        SharedTransitionsListModel sharedTransitionsListModel;
66
63
        NameGenerator nameGenerator;
 
64
        boolean messageShown;
67
65
        
68
66
        public DeleteSharedPlaceOrTransition(JList list, SharedPlacesAndTransitionsPanel sharedPlacesAndTransitionsPanel, TabContent tab, 
69
67
                        SharedPlacesListModel sharedPlacesListModel, SharedTransitionsListModel sharedTransitionsListModel, NameGenerator nameGenerator) {
90
88
        }
91
89
        
92
90
        public void actionPerformed(ActionEvent arg0) {
93
 
                if(list.getSelectedValue() != null){
94
 
                        ArrayList<String> affectedComponents = new ArrayList<String>(); 
 
91
                messageShown = false;
 
92
                if(list.getSelectedValuesList() != null){
 
93
                        ArrayList<String> affectedComponents = new ArrayList<String>();
95
94
                        if(sharedPlacesAndTransitionsPanel.isDisplayingTransitions()){
96
 
                                for(TimedTransition t : ((SharedTransition)list.getSelectedValue()).transitions()){
97
 
                                        affectedComponents.add(t.model().name());
 
95
                                for(Object transition : list.getSelectedValuesList()) {
 
96
                                        for(TimedTransition t : ((SharedTransition)transition).transitions()){
 
97
                                                if(!(affectedComponents.contains(t.model().name())))
 
98
                                                        affectedComponents.add(t.model().name());
 
99
                                        }
98
100
                                }
99
101
                        } else {
100
 
                                affectedComponents = ((SharedPlace)list.getSelectedValue()).getComponentsUsingThisPlace();
 
102
                                ArrayList<String> affectedComponentsWithDupes = new ArrayList<String>();
 
103
                                for(Object place : list.getSelectedValuesList()) {
 
104
                                        affectedComponentsWithDupes.addAll(((SharedPlace)place).getComponentsUsingThisPlace());
 
105
                                }
 
106
                                for(String component : affectedComponentsWithDupes) {
 
107
                                        if(!(affectedComponents.contains(component))) {
 
108
                                                affectedComponents.add(component);
 
109
                                        }
 
110
                                }
101
111
                        }
102
112
                        
103
113
                        DeleteSharedResult result = new DeleteSharedResult(JOptionPane.OK_OPTION, false);
107
117
                                
108
118
                        if(result.choice == JOptionPane.OK_OPTION){
109
119
                                undoManager.newEdit();
 
120
                                Collection<TAPNQuery> affectedQueries = new ArrayList<TAPNQuery>();
 
121
                                
110
122
                                if(sharedPlacesAndTransitionsPanel.isDisplayingTransitions()){
111
 
                                        deleteSharedTransition(result.deleteFromTemplates);
 
123
                                        affectedQueries = findAffectedTransitionQueries(list.getSelectedValuesList());
 
124
                                        for(Object transition : list.getSelectedValuesList()) {
 
125
                                                deleteSharedTransition(result.deleteFromTemplates, (SharedTransition) transition, affectedQueries);
 
126
                                        }
 
127
                                                
112
128
                                }else{
113
 
                                        deleteSharedPlace(result.deleteFromTemplates);
 
129
                                        affectedQueries = findAffectedPlaceQueries(list.getSelectedValuesList());
 
130
                                        for(Object place : list.getSelectedValuesList()) {
 
131
                                                deleteSharedPlace(result.deleteFromTemplates, (SharedPlace) place, affectedQueries);
 
132
                                        }
114
133
                                }
115
134
                        }
116
135
                }
117
136
        }
118
137
 
119
 
        private void deleteSharedPlace(boolean deleteFromTemplates) {
120
 
                SharedPlace sharedPlace = (SharedPlace)list.getSelectedValue();
121
 
                Collection<TAPNQuery> affectedQueries = findAffectedPlaceQueries(sharedPlace);
122
 
                if(affectedQueries.size() > 0){
 
138
        private void deleteSharedPlace(boolean deleteFromTemplates, SharedPlace placeToRemove, Collection<TAPNQuery> affectedQueries) {
 
139
                SharedPlace sharedPlace = placeToRemove;
 
140
                if(affectedQueries.size() > 0 && messageShown == false){
 
141
                        messageShown = true;
123
142
                        StringBuffer buffer = new StringBuffer("The following queries contains the shared place and will also be deleted:");
124
143
                        buffer.append(System.getProperty("line.separator"));
125
144
                        buffer.append(System.getProperty("line.separator"));
184
203
                }
185
204
        }
186
205
 
187
 
        private Collection<TAPNQuery> findAffectedPlaceQueries(SharedPlace sharedPlace) {
188
 
                ArrayList<TAPNQuery> queries = new ArrayList<TAPNQuery>();
189
 
                ContainsSharedPlaceVisitor visitor = new ContainsSharedPlaceVisitor(sharedPlace.name());
190
 
 
191
 
                for(TAPNQuery query : tab.queries()){
192
 
                        BooleanResult result = new BooleanResult();
193
 
                        query.getProperty().accept(visitor, result);
194
 
                        if(result.result()){
195
 
                                queries.add(query);
196
 
                        }
197
 
                }
198
 
                return queries;
199
 
        }
200
 
        
201
 
        private Collection<TAPNQuery> findAffectedTransitionQueries(SharedTransition sharedTransition) {
202
 
                ArrayList<TAPNQuery> queries = new ArrayList<TAPNQuery>();
203
 
                ContainsSharedTransitionVisitor visitor = new ContainsSharedTransitionVisitor(sharedTransition.name());
204
 
 
205
 
                for(TAPNQuery query : tab.queries()){
206
 
                        BooleanResult result = new BooleanResult();
207
 
                        query.getProperty().accept(visitor, result);
208
 
                        if(result.result()){
209
 
                                queries.add(query);
210
 
                        }
211
 
                }
212
 
                return queries;
213
 
        }
 
206
        private Collection<TAPNQuery> findAffectedPlaceQueries(List<Object> sharedPlaces) {
 
207
                ArrayList<TAPNQuery> queries = new ArrayList<TAPNQuery>();
 
208
                for(Object sharedPlace : sharedPlaces) {
 
209
                        ContainsSharedPlaceVisitor visitor = new ContainsSharedPlaceVisitor(((SharedPlace)sharedPlace).name());
 
210
        
 
211
                        for(TAPNQuery query : tab.queries()){
 
212
                                BooleanResult result = new BooleanResult();
 
213
                                query.getProperty().accept(visitor, result);
 
214
                                if(result.result() && !(queries.contains(query))){
 
215
                                        queries.add(query);
 
216
                                }
 
217
                        }
 
218
                }
 
219
                return queries;
 
220
        }
 
221
        
 
222
        private Collection<TAPNQuery> findAffectedTransitionQueries(List<Object> sharedTransitions) {
 
223
                ArrayList<TAPNQuery> queries = new ArrayList<TAPNQuery>();
 
224
                for(Object sharedTransition : sharedTransitions) {
 
225
                        ContainsSharedTransitionVisitor visitor = new ContainsSharedTransitionVisitor(((SharedTransition)sharedTransition).name());
 
226
                        
 
227
                        for(TAPNQuery query : tab.queries()){
 
228
                                BooleanResult result = new BooleanResult();
 
229
                                query.getProperty().accept(visitor, result);
 
230
                                if(result.result() && !(queries.contains(query))){
 
231
                                        queries.add(query);
 
232
                                }
 
233
                        }
 
234
                }
 
235
                return queries;
 
236
        }
 
237
        
214
238
 
215
239
        private Command createDeleteArcCommand(Template template, Arc arc, DrawingSurfaceImpl drawingSurface) {
216
240
                if(arc instanceof TimedInhibitorArcComponent){
231
255
                undoManager.addEdit(cmd);
232
256
        }
233
257
        
234
 
        private void deleteSharedTransition(boolean deleteFromTemplates) {
235
 
                SharedTransition sharedTransition = (SharedTransition)list.getSelectedValue();
236
 
                Collection<TAPNQuery> affectedQueries = findAffectedTransitionQueries(sharedTransition);
237
 
                if(affectedQueries.size() > 0){
238
 
                    StringBuffer buffer = new StringBuffer("The following queries contains the shared transition and will also be deleted:");
239
 
                    buffer.append(System.getProperty("line.separator"));
240
 
                    buffer.append(System.getProperty("line.separator"));
241
 
 
242
 
                    for(TAPNQuery query : affectedQueries){
243
 
                            buffer.append(query.getName());
244
 
                            buffer.append(System.getProperty("line.separator"));
245
 
                    }
246
 
                    buffer.append(System.getProperty("line.separator"));
247
 
                    buffer.append("Do you want to continue?");
248
 
                    int choice = JOptionPane.showConfirmDialog(CreateGui.getApp(), buffer.toString(), "Warning", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
249
 
                    if(choice == JOptionPane.NO_OPTION) return;
250
 
 
251
 
                    Command cmd = new DeleteQueriesCommand(tab, affectedQueries);
252
 
                    cmd.redo();
253
 
                    undoManager.addEdit(cmd);
 
258
        private void deleteSharedTransition(boolean deleteFromTemplates, SharedTransition transitionToBeRemoved, Collection<TAPNQuery> affectedQueries) {
 
259
                SharedTransition sharedTransition = transitionToBeRemoved;
 
260
                if(affectedQueries.size() > 0 && !messageShown){
 
261
                        messageShown = true;
 
262
                StringBuffer buffer = new StringBuffer("The following queries contains the shared transition and will also be deleted:");
 
263
                buffer.append(System.getProperty("line.separator"));
 
264
                buffer.append(System.getProperty("line.separator"));
 
265
        
 
266
                for(TAPNQuery query : affectedQueries){
 
267
                        buffer.append(query.getName());
 
268
                        buffer.append(System.getProperty("line.separator"));
 
269
                }
 
270
                buffer.append(System.getProperty("line.separator"));
 
271
                buffer.append("Do you want to continue?");
 
272
                int choice = JOptionPane.showConfirmDialog(CreateGui.getApp(), buffer.toString(), "Warning", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
 
273
                if(choice == JOptionPane.NO_OPTION) return;
 
274
        
 
275
                Command cmd = new DeleteQueriesCommand(tab, affectedQueries);
 
276
                cmd.redo();
 
277
                undoManager.addEdit(cmd);
254
278
                }
255
279
                if(deleteFromTemplates){
256
280
                        for(Template template : tab.allTemplates()){ // TODO: Get rid of pipe references somehow