Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AddMarkerAction.java')
-rw-r--r--org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AddMarkerAction.java324
1 files changed, 0 insertions, 324 deletions
diff --git a/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AddMarkerAction.java b/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AddMarkerAction.java
deleted file mode 100644
index 5e360e1fd19..00000000000
--- a/org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AddMarkerAction.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.texteditor;
-
-
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.ResourceBundle;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.Platform;
-
-import org.eclipse.swt.widgets.Shell;
-
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.IInputValidator;
-import org.eclipse.jface.dialogs.InputDialog;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextSelection;
-import org.eclipse.jface.window.Window;
-
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.PlatformUI;
-
-
-
-/**
- * Action for creating a marker of a specified type for the editor's
- * input element based on the editor's selection. If required, the
- * action asks the user to provide a marker label. The action is initially
- * associated with a text editor via the constructor, but that can be
- * subsequently changed using <code>setEditor</code>.
- * <p>
- * The following keys, prepended by the given option prefix,
- * are used for retrieving resources from the given bundle:
- * <ul>
- * <li><code>"dialog.title"</code> - the input dialog's title</li>
- * <li><code>"dialog.message"</code> - the input dialog's message</li>
- * <li><code>"error.dialog.title"</code> - the error dialog's title</li>
- * <li><code>"error.dialog.message"</code> - the error dialog's message</li>
- * </ul>
- * This class may be instantiated but is not intended for subclassing.
- * </p>
- */
-public class AddMarkerAction extends TextEditorAction {
-
-
- /** The maximum length of an proposed label. */
- private static final int MAX_LABEL_LENGTH= 80;
- /** The type for newly created markers */
- private String fMarkerType;
- /** Should the user be asked for a label? */
- private boolean fAskForLabel;
- /** The action's resource bundle */
- private ResourceBundle fBundle;
- /** The prefix used for resource bundle lookup */
- private String fPrefix;
-
-
- /**
- * Creates a new action for the given text editor. The action configures its
- * visual representation from the given resource bundle.
- *
- * @param bundle the resource bundle
- * @param prefix a prefix to be prepended to the various resource keys
- * (described in <code>ResourceAction</code> constructor), or
- * <code>null</code> if none
- * @param textEditor the text editor
- * @param markerType the type of marker to add
- * @param askForLabel <code>true</code> if the user should be asked for
- * a label for the new marker
- * @see ResourceAction#ResourceAction
- */
- public AddMarkerAction(ResourceBundle bundle, String prefix, ITextEditor textEditor, String markerType, boolean askForLabel) {
- super(bundle, prefix, textEditor);
- fBundle= bundle;
- fPrefix= prefix;
- fMarkerType= markerType;
- fAskForLabel= askForLabel;
- }
-
- /**
- * Returns this action's resource bundle.
- *
- * @return this action's resource bundle
- */
- protected ResourceBundle getResourceBundle() {
- return fBundle;
- }
-
- /**
- * Returns this action's resource key prefix.
- *
- * @return this action's resource key prefix
- */
- protected String getResourceKeyPrefix() {
- return fPrefix;
- }
-
- /*
- * @see IAction#run()
- */
- public void run() {
- IResource resource= getResource();
- if (resource == null)
- return;
- Map attributes= getInitialAttributes();
- if (fAskForLabel) {
- if (!askForLabel(attributes))
- return;
- }
-
- try {
- MarkerUtilities.createMarker(resource, attributes, fMarkerType);
- } catch (CoreException x) {
-
- Platform.getPlugin(PlatformUI.PLUGIN_ID).getLog().log(x.getStatus());
-
- Shell shell= getTextEditor().getSite().getShell();
- String title= getString(fBundle, fPrefix + "error.dialog.title", fPrefix + "error.dialog.title"); //$NON-NLS-2$ //$NON-NLS-1$
- String msg= getString(fBundle, fPrefix + "error.dialog.message", fPrefix + "error.dialog.message"); //$NON-NLS-2$ //$NON-NLS-1$
-
- ErrorDialog.openError(shell, title, msg, x.getStatus());
- }
- }
-
- /*
- * @see TextEditorAction#update()
- */
- public void update() {
- setEnabled(getResource() != null);
- }
-
- /**
- * Asks the user for a marker label. Returns <code>true</code> if a label
- * is entered, <code>false</code> if the user cancels the input dialog.
- * The value for the attribute <code>message</code> is modified in the given
- * attribute map.
- *
- * @param attributes the attributes map
- * @return <code>true</code> if a label has been entered
- */
- protected boolean askForLabel(Map attributes) {
-
- Object o= attributes.get("message"); //$NON-NLS-1$
- String proposal= (o instanceof String) ? (String) o : ""; //$NON-NLS-1$
- if (proposal == null)
- proposal= ""; //$NON-NLS-1$
-
- String title= getString(fBundle, fPrefix + "dialog.title", fPrefix + "dialog.title"); //$NON-NLS-2$ //$NON-NLS-1$
- String message= getString(fBundle, fPrefix + "dialog.message", fPrefix + "dialog.message"); //$NON-NLS-2$ //$NON-NLS-1$
- IInputValidator inputValidator = new IInputValidator() {
- public String isValid(String newText) {
- return (newText == null || newText.trim().length() == 0) ? " " : null; //$NON-NLS-1$
- }
- };
- InputDialog dialog= new InputDialog(getTextEditor().getSite().getShell(), title, message, proposal, inputValidator);
-
- String label= null;
- if (dialog.open() != Window.CANCEL)
- label= dialog.getValue();
-
- if (label == null)
- return false;
-
- label= label.trim();
- if (label.length() == 0)
- return false;
-
- attributes.put("message", label); //$NON-NLS-1$
- return true;
- }
-
- /**
- * Returns the attributes the new marker will be initialized with.
- * <p>
- * Subclasses may extend or replace this method.</p>
- *
- * @return the attributes the new marker will be initialized with
- */
- protected Map getInitialAttributes() {
-
- Map attributes= new HashMap(11);
-
- ITextSelection selection= (ITextSelection) getTextEditor().getSelectionProvider().getSelection();
- if (!selection.isEmpty()) {
-
- int start= selection.getOffset();
- int length= selection.getLength();
-
- if (length < 0) {
- length= -length;
- start -= length;
- }
-
- MarkerUtilities.setCharStart(attributes, start);
- MarkerUtilities.setCharEnd(attributes, start + length);
-
- // marker line numbers are 1-based
- int line= selection.getStartLine();
- MarkerUtilities.setLineNumber(attributes, line == -1 ? -1 : line + 1);
-
- IDocument document= getTextEditor().getDocumentProvider().getDocument(getTextEditor().getEditorInput());
- MarkerUtilities.setMessage(attributes, getLabelProposal(document, start, length));
-
- }
-
- return attributes;
- }
-
- /**
- * Returns the initial label for the marker.
- *
- * @param document the document from which to extract a label proposal
- * @param offset the document offset of the range from which to extract the label proposal
- * @param length the length of the range from which to extract the label proposal
- * @return the label proposal
- */
- protected String getLabelProposal(IDocument document, int offset, int length) {
-
-
- try {
-
-
- if (length > 0) {
-
- // find first white char but skip leading white chars
- int i= 0;
- boolean skip= true;
- while (i < length) {
- boolean isWhitespace= Character.isWhitespace(document.getChar(offset + i));
- if (!skip && isWhitespace)
- break;
- if (skip && !isWhitespace)
- skip= false;
- i++;
- }
-
- String label= document.get(offset, i);
- return label.trim();
- }
-
-
- char ch;
-
- // Get the first white char before the selection.
- int left= offset;
-
- int line= document.getLineOfOffset(offset);
- int limit= document.getLineOffset(line);
-
- while (left > limit) {
- ch= document.getChar(left);
- if (Character.isWhitespace(ch))
- break;
- --left;
- }
-
- limit += document.getLineLength(line);
-
- // Now get the first letter.
- while (left <= limit) {
- ch= document.getChar(left);
- if (!Character.isWhitespace(ch))
- break;
- ++left;
- }
-
- if (left > limit)
- return null;
-
- limit= Math.min(limit, left + MAX_LABEL_LENGTH);
-
- // Get the next white char.
- int right= (offset + length > limit ? limit : offset + length);
- while (right < limit) {
- ch= document.getChar(right);
- if (Character.isWhitespace(ch))
- break;
- ++right;
- }
-
- // Trim the string and return it.
- if (left != right) {
- String label= document.get(left, right - left);
- return label.trim();
- }
-
- } catch (BadLocationException x) {
- // don't proposal label then
- }
-
- return null;
- }
-
- /**
- * Returns the resource on which to create the marker,
- * or <code>null</code> if there is no applicable resource. This
- * queries the editor's input using <code>getAdapter(IResource.class)</code>.
- * Subclasses may override this method.
- *
- * @return the resource to which to attach the newly created marker
- */
- protected IResource getResource() {
- ITextEditor editor= getTextEditor();
- if (editor != null) {
- IEditorInput input= editor.getEditorInput();
- return (IResource) ((IAdaptable) input).getAdapter(IResource.class);
- }
- return null;
- }
-}

Back to the top