source: default/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/quickfix/modifications/RemoveUnusedRuleModification.java @ 5

Last change on this file since 5 was 5, checked in by zeiss, 14 years ago
  • Property svn:mime-type set to text/plain
File size: 2.5 KB
Line 
1package de.ugoe.cs.swe.bnftools.ui.quickfix.modifications;
2
3import java.util.ArrayList;
4import java.util.List;
5
6import org.eclipse.core.runtime.NullProgressMonitor;
7import org.eclipse.emf.ecore.EObject;
8import org.eclipse.ltk.core.refactoring.Change;
9import org.eclipse.ltk.core.refactoring.PerformChangeOperation;
10import org.eclipse.ltk.core.refactoring.RefactoringCore;
11import org.eclipse.ui.PlatformUI;
12import org.eclipse.xtext.parsetree.CompositeNode;
13import org.eclipse.xtext.parsetree.NodeAdapter;
14import org.eclipse.xtext.parsetree.NodeUtil;
15import org.eclipse.xtext.resource.IResourceDescriptions;
16import org.eclipse.xtext.ui.editor.XtextEditor;
17import org.eclipse.xtext.ui.editor.model.edit.IModificationContext;
18import org.eclipse.xtext.ui.editor.model.edit.ISemanticModification;
19
20import de.ugoe.cs.swe.bnftools.ebnf.Rule;
21import de.ugoe.cs.swe.bnftools.ui.quickfix.processors.RemoveUnusedRulesProcessor;
22
23public class RemoveUnusedRuleModification implements ISemanticModification {
24
25        IResourceDescriptions resourceDescriptions;
26
27        // ----------------------------------------------------------------------------------------------------
28
29        public RemoveUnusedRuleModification(
30                        IResourceDescriptions resourceDescriptions) {
31                this.resourceDescriptions = resourceDescriptions;
32        }
33
34        // ----------------------------------------------------------------------------------------------------
35
36        public void apply(EObject element, IModificationContext context)
37                        throws Exception {
38                // get current editor
39                XtextEditor editor = (XtextEditor) PlatformUI.getWorkbench()
40                                .getActiveWorkbenchWindow().getActivePage().getActiveEditor();
41                Rule rule = (Rule) element;
42
43                NodeAdapter declarationNode = NodeUtil.getNodeAdapter(rule);
44               
45                List<CompositeNode> unusedNodes = new ArrayList<CompositeNode>();
46               
47                unusedNodes.add(declarationNode.getParserNode());
48               
49                RemoveUnusedRulesProcessor processor = new RemoveUnusedRulesProcessor(
50                                editor, editor.getDocument(), unusedNodes);
51               
52                NullProgressMonitor pm = new NullProgressMonitor();
53                Change change;
54                try {
55                        change = processor.createChange(pm);
56                        change.initializeValidationData(pm);
57                        change.setEnabled(true);
58                        PerformChangeOperation operation = new PerformChangeOperation(
59                                        change);
60                        operation.setUndoManager(RefactoringCore.getUndoManager(),
61                                        processor.getProcessorName());
62                        operation.run(pm);
63                        change.dispose();
64                } catch (Exception e) {
65                        e.printStackTrace();
66                }
67
68        }
69
70}
Note: See TracBrowser for help on using the repository browser.