Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(568)

Unified Diff: editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/actions/ExtractLocalAction.java

Issue 10384142: Initial support for 'Extract temp' - only when single expression selected (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Use ASTVisitor as type switch Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/actions/ExtractLocalAction.java
diff --git a/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/actions/ExtractLocalAction.java b/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/actions/ExtractLocalAction.java
new file mode 100644
index 0000000000000000000000000000000000000000..874a880030568ff1e05b6dedf58eb2e43281cec3
--- /dev/null
+++ b/editor/tools/plugins/com.google.dart.tools.ui/src/com/google/dart/tools/ui/actions/ExtractLocalAction.java
@@ -0,0 +1,59 @@
+package com.google.dart.tools.ui.actions;
+
+import com.google.dart.tools.internal.corext.refactoring.RefactoringAvailabilityTester;
+import com.google.dart.tools.internal.corext.refactoring.code.ExtractLocalRefactoring;
+import com.google.dart.tools.ui.internal.actions.ActionUtil;
+import com.google.dart.tools.ui.internal.actions.SelectionConverter;
+import com.google.dart.tools.ui.internal.refactoring.ExtractLocalWizard;
+import com.google.dart.tools.ui.internal.refactoring.RefactoringMessages;
+import com.google.dart.tools.ui.internal.refactoring.RefactoringSaveHelper;
+import com.google.dart.tools.ui.internal.refactoring.actions.RefactoringStarter;
+import com.google.dart.tools.ui.internal.text.DartHelpContextIds;
+import com.google.dart.tools.ui.internal.text.editor.DartEditor;
+import com.google.dart.tools.ui.internal.text.editor.DartTextSelection;
+
+import org.eclipse.jface.text.ITextSelection;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Extracts an expression into a new local variable and replaces all occurrences of the expression
+ * with the local variable.
+ */
+public class ExtractLocalAction extends SelectionDispatchAction {
+
+ private final DartEditor editor;
+
+ public ExtractLocalAction(DartEditor editor) {
+ super(editor.getEditorSite());
+ this.editor = editor;
+ setText(RefactoringMessages.ExtractLocalAction_label);
+ setEnabled(SelectionConverter.getInputAsCompilationUnit(editor) != null);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(this, DartHelpContextIds.EXTRACT_LOCAL_ACTION);
+ }
+
+ @Override
+ public void run(ITextSelection selection) {
+ if (!ActionUtil.isEditable(editor)) {
+ return;
+ }
+ ExtractLocalRefactoring refactoring = new ExtractLocalRefactoring(
+ SelectionConverter.getInputAsCompilationUnit(editor),
+ selection.getOffset(),
+ selection.getLength());
+ new RefactoringStarter().activate(
+ new ExtractLocalWizard(refactoring),
+ getShell(),
+ RefactoringMessages.ExtractLocalAction_dialog_title,
+ RefactoringSaveHelper.SAVE_NOTHING);
+ }
+
+ @Override
+ public void selectionChanged(DartTextSelection selection) {
+ setEnabled(RefactoringAvailabilityTester.isExtractLocalAvailable(selection));
+ }
+
+ @Override
+ public void selectionChanged(ITextSelection selection) {
+ setEnabled(editor != null && SelectionConverter.getInputAsCompilationUnit(editor) != null);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698