Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.search/search/org/eclipse/search/internal/ui/text/ReplaceDialog.java')
-rw-r--r--org.eclipse.search/search/org/eclipse/search/internal/ui/text/ReplaceDialog.java382
1 files changed, 0 insertions, 382 deletions
diff --git a/org.eclipse.search/search/org/eclipse/search/internal/ui/text/ReplaceDialog.java b/org.eclipse.search/search/org/eclipse/search/internal/ui/text/ReplaceDialog.java
deleted file mode 100644
index 4fd603c7a26..00000000000
--- a/org.eclipse.search/search/org/eclipse/search/internal/ui/text/ReplaceDialog.java
+++ /dev/null
@@ -1,382 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 International Business Machines Corp. and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v0.5
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.search.internal.ui.text;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.IWorkspaceDescription;
-import org.eclipse.core.resources.IncrementalProjectBuilder;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.util.Assert;
-
-import org.eclipse.ui.IEditorDescriptor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorRegistry;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.actions.GlobalBuildAction;
-import org.eclipse.ui.texteditor.AbstractMarkerAnnotationModel;
-import org.eclipse.ui.texteditor.IDocumentProvider;
-import org.eclipse.ui.texteditor.ITextEditor;
-
-import org.eclipse.search.ui.ISearchResultView;
-
-import org.eclipse.search.internal.ui.SearchMessages;
-import org.eclipse.search.internal.ui.SearchPlugin;
-import org.eclipse.search.internal.ui.SearchResultView;
-import org.eclipse.search.internal.ui.SearchResultViewEntry;
-import org.eclipse.search.internal.ui.util.ExceptionHandler;
-
-public class ReplaceDialog extends Dialog {
-
- private static final int REPLACE_NEXT= IDialogConstants.CLIENT_ID;
- private static final int REPLACE= IDialogConstants.CLIENT_ID + 1;
- private static final int NEXT= IDialogConstants.CLIENT_ID + 2;
-
- private String fSearchPattern;
-
- private IWorkbenchWindow fWindow;
- private boolean fAutobuild;
- private boolean fFatalError;
-
- // UI
- private Text fTextField;
- private Button fSaveButton;
- private Button fReplaceNextButton;
- private Button fReplaceButton;
- private Button fNextButton;
-
-
- private boolean fSaved;
- private ITextEditor fEditor;
- private boolean fCloseEditor;
- private IDocument fDocument;
- private AbstractMarkerAnnotationModel fAnnotationModel;
-
-
- private List fElements;
- private int fElementIndex;
- private SearchResultViewEntry fCurrentEntry;
- private List fCurrentMarkers;
- private int fMarkerIndex;
- private IMarker fCurrentMatch;
-
- private static class MarkerNotPresentableException extends Exception {
- private IFile fFile;
- MarkerNotPresentableException(IFile file) {
- fFile= file;
- }
- public IFile getFile() {
- return fFile;
- }
- }
-
- protected ReplaceDialog(Shell parentShell, List elements, IWorkbenchWindow window, String searchPattern) {
- super(parentShell);
- Assert.isNotNull(elements);
- Assert.isNotNull(searchPattern);
- fElements= new ArrayList(elements);
- Assert.isNotNull(window);
- fWindow= window;
- fSearchPattern= searchPattern;
- }
-
- public void create() {
- super.create();
- Shell shell= getShell();
- shell.setText(getDialogTitle());
- updateButtons();
- }
-
- public int open() {
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- fAutobuild= workspace.isAutoBuilding();
- if (fAutobuild) {
- IWorkspaceDescription description= workspace.getDescription();
- description.setAutoBuilding(false);
- try {
- workspace.setDescription(description);
- } catch (CoreException e) {
- ExceptionHandler.handle(e, getShell(), getDialogTitle(), SearchMessages.getString("ReplaceDialog.error.auto_building")); //$NON-NLS-1$
- fFatalError= true;
- }
- }
- try {
- fCurrentMatch= getNextMatch(false);
- } catch (CoreException e) {
- ExceptionHandler.handle(e, getShell(), getDialogTitle(), SearchMessages.getString("ReplaceDialog.error.no_matches")); //$NON-NLS-1$
- fFatalError= true;
- } catch (MarkerNotPresentableException e) {
- handleMarkerNotPresentableException(e);
- fFatalError= true;
- }
- return super.open();
- }
-
- public boolean close() {
- boolean result= super.close();
- restoreAutoBuildState();
- return result;
- }
-
- protected Control createDialogArea(Composite parent) {
- Composite result= (Composite)super.createDialogArea(parent);
- GridLayout layout= (GridLayout)result.getLayout();
- layout.numColumns= 2;
-
- initializeDialogUnits(result);
-
- Label label= new Label(result, SWT.NONE);
- label.setText(SearchMessages.getString("ReplaceDialog.replace_label")); //$NON-NLS-1$
-
- CLabel clabel= new CLabel(result, SWT.NONE);
- clabel.setText(fSearchPattern);
- GridData gd= new GridData(GridData.FILL_HORIZONTAL);
- gd.widthHint= convertWidthInCharsToPixels(50);
- clabel.setLayoutData(gd);
-
- label= new Label(result, SWT.NONE);
- label.setText(SearchMessages.getString("ReplaceDialog.with_label")); //$NON-NLS-1$
-
- fTextField= new Text(result, SWT.BORDER);
- gd= new GridData(GridData.FILL_HORIZONTAL);
- gd.widthHint= convertWidthInCharsToPixels(50);
- fTextField.setLayoutData(gd);
- fTextField.setFocus();
-
- fSaveButton= new Button(result, SWT.CHECK);
- fSaveButton.setText(SearchMessages.getString("ReplaceDialog.save_changes")); //$NON-NLS-1$
- fSaveButton.setSelection(true);
- gd= new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan= 2;
- fSaveButton.setLayoutData(gd);
-
- return result;
- }
-
- protected void createButtonsForButtonBar(Composite parent) {
- fReplaceNextButton= createButton(parent, REPLACE_NEXT, SearchMessages.getString("ReplaceDialog.replace_next"), false); //$NON-NLS-1$
- fReplaceButton= createButton(parent, REPLACE, SearchMessages.getString("ReplaceDialog.replace"), false); //$NON-NLS-1$
- fNextButton= createButton(parent, NEXT, SearchMessages.getString("ReplaceDialog.next"), false); //$NON-NLS-1$
- createButton(parent, IDialogConstants.CANCEL_ID, SearchMessages.getString("ReplaceDialog.close"), false); //$NON-NLS-1$
- }
-
- protected Point getInitialLocation(Point initialSize) {
- SearchResultView view= (SearchResultView)SearchPlugin.getSearchResultView();
- if (view == null)
- return super.getInitialLocation(initialSize);
- Point result= new Point(0,0);
- Control control= view.getViewer().getControl();
- Point size= control.getSize();
- Point location= control.toDisplay(control.getLocation());
- result.x= Math.max(0, location.x + size.x - initialSize.x);
- result.y= Math.max(0, location.y + size. y - initialSize.y);
- return result;
- }
-
- protected void buttonPressed(int buttonId) {
- try {
- boolean save= fSaveButton.getSelection();
- String text= fTextField.getText();
- switch(buttonId) {
- case REPLACE_NEXT:
- replace(fCurrentMatch, text, save);
- fCurrentMatch= getNextMatch(save);
- break;
- case REPLACE:
- replace(fCurrentMatch, text, save);
- fCurrentMatch= null;
- break;
- case NEXT:
- fCurrentMatch= getNextMatch(save);
- break;
- case IDialogConstants.CANCEL_ID:
- saveEditor(save);
- break;
- }
- } catch (CoreException e) {
- ExceptionHandler.handle(e, getShell(), getDialogTitle(), SearchMessages.getString("ReplaceDialog.error.unexpected_exception")); //$NON-NLS-1$
- fFatalError= true;
- } catch (BadLocationException e) {
- MessageDialog.openError(getShell(), getDialogTitle(), SearchMessages.getString("ReplaceDialog.error.different_content")); //$NON-NLS-1$
- fFatalError= true;
- } catch (MarkerNotPresentableException e) {
- handleMarkerNotPresentableException(e);
- fFatalError= true;
- }
- updateButtons();
- super.buttonPressed(buttonId);
- }
-
- private void replace(IMarker source, String text, boolean save) throws CoreException, BadLocationException {
- Position position= fAnnotationModel.getMarkerPosition(source);
- fDocument.replace(position.getOffset(), position.getLength(), text);
- SearchPlugin.getWorkspace().deleteMarkers(new IMarker[] {source});
- }
-
- private boolean isLastMatch() {
- return fCurrentMatch != null && fCurrentMarkers == null;
- }
-
- private boolean hasNextMatch() {
- if (fCurrentMarkers != null)
- return true;
- return fElementIndex < fElements.size();
- }
-
- private IMarker getNextMatch(boolean save) throws CoreException, MarkerNotPresentableException {
- if (fCurrentMarkers == null) {
- if (fElementIndex >= fElements.size())
- return null;
- saveEditor(save);
- fCurrentEntry= (SearchResultViewEntry)fElements.get(fElementIndex++);
- fCurrentMarkers= new ArrayList(fCurrentEntry.getMarkers());
- fMarkerIndex= 0;
- }
- IMarker result= (IMarker)fCurrentMarkers.get(fMarkerIndex);
- if (fEditor == null) {
- IWorkbenchPage activePage = fWindow.getActivePage();
- int openEditors= activePage.getEditorReferences().length;
-
- fEditor= openFile(result, activePage);
- fEditor.gotoMarker(result);
- IDocumentProvider provider= fEditor.getDocumentProvider();
- IEditorInput input = fEditor.getEditorInput();
- fDocument= provider.getDocument(input);
- fAnnotationModel= (AbstractMarkerAnnotationModel)provider.getAnnotationModel(input);
- fCloseEditor= openEditors < activePage.getEditorReferences().length;
- } else {
- fEditor.gotoMarker(result);
- }
- if (fMarkerIndex == fCurrentMarkers.size() - 1) {
- fCurrentMarkers= null;
- } else {
- fMarkerIndex++;
- }
- return result;
- }
-
- private ITextEditor openFile(IMarker marker, IWorkbenchPage activePage) throws MarkerNotPresentableException, PartInitException {
- IFile markerFile= marker.getResource() instanceof IFile ? (IFile)marker.getResource() : null;
- if (markerFile == null)
- throw new MarkerNotPresentableException(null);
-
- String currentEditorId= null;
- IEditorRegistry editorRegistry= SearchPlugin.getDefault().getWorkbench().getEditorRegistry();
- IEditorDescriptor desc= editorRegistry.getDefaultEditor(markerFile);
- if (desc != null)
- currentEditorId= desc.getId();
- try {
- IEditorPart result= activePage.openEditor(markerFile, "org.eclipse.ui.DefaultTextEditor", false); //$NON-NLS-1$
- if (!(result instanceof ITextEditor))
- throw new MarkerNotPresentableException(markerFile);
- return (ITextEditor)result;
- } finally {
- if (currentEditorId != null)
- editorRegistry.setDefaultEditor(markerFile, currentEditorId);
- }
- }
-
- private void saveEditor(boolean save) throws CoreException {
- if (fEditor == null)
- return;
-
- save= save && fEditor.isDirty();
- if (save) {
- IDocumentProvider provider= fEditor.getDocumentProvider();
- IEditorInput input = fEditor.getEditorInput();
- try {
- provider.aboutToChange(input);
- provider.saveDocument(new NullProgressMonitor(), input, fDocument, true);
- fSaved= true;
- } finally {
- provider.changed(input);
- }
- }
- if (fCloseEditor && !fEditor.isDirty())
- fEditor.close(false);
- fEditor= null;
- fDocument= null;
- fAnnotationModel= null;
- fCloseEditor= false;
-
- }
-
- private void updateButtons() {
- boolean hasNext= hasNextMatch();
- fReplaceNextButton.setEnabled(!fFatalError && fCurrentMatch != null);
- fReplaceButton.setEnabled(!fFatalError && fCurrentMatch != null);
- fNextButton.setEnabled(!fFatalError && hasNext);
- }
-
- private void restoreAutoBuildState() {
- if (!fAutobuild)
- return;
- IWorkspace workspace= ResourcesPlugin.getWorkspace();
- IWorkspaceDescription description= workspace.getDescription();
- description.setAutoBuilding(true);
- try {
- workspace.setDescription(description);
- } catch (CoreException e) {
- ExceptionHandler.handle(e, getShell(), getDialogTitle(), SearchMessages.getString("ReplaceDialog.error.reenable_auto_build_failed")); //$NON-NLS-1$
- return;
- }
-
- ISearchResultView view= SearchPlugin.getSearchResultView();
- if (fSaved && view != null) {
- new GlobalBuildAction(
- view.getSite().getWorkbenchWindow(),
- IncrementalProjectBuilder.INCREMENTAL_BUILD).run();
- }
- }
-
- private String getDialogTitle() {
- return SearchMessages.getString("ReplaceDialog.dialog.title"); //$NON-NLS-1$
- }
-
- private void handleMarkerNotPresentableException(MarkerNotPresentableException e) {
- IFile file= e.getFile();
- String message;
- if (file == null) {
- message= SearchMessages.getString("ReplaceDialog.error.no_file_for_marker"); //$NON-NLS-1$
- } else {
- message= SearchMessages.getFormattedString("ReplaceDialog.error.unable_to_open_text_editor", file.getName()); //$NON-NLS-1$
- }
- MessageDialog.openError(getParentShell(), getDialogTitle(), message);
- }
-}

Back to the top