Java tutorial
/******************************************************************************* * Copied from package org.eclipse.compare.internal.CompareDialog, but features * regarding writing the resource is taken out. * * 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 Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.tigris.subversion.subclipse.ui.dialogs; import java.lang.reflect.InvocationTargetException; import org.eclipse.compare.CompareEditorInput; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.util.Assert; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; import org.tigris.subversion.subclipse.ui.IHelpContextIds; import org.tigris.subversion.subclipse.ui.Policy; import org.tigris.subversion.subclipse.ui.SVNUIPlugin; public class CompareDialog extends SubclipseTrayDialog { private CompareEditorInput compareEditorInput; private IDialogSettings settings; public CompareDialog(Shell shell, CompareEditorInput input) { super(shell); setShellStyle(getShellStyle() | SWT.RESIZE | SWT.MAX); Assert.isNotNull(input); compareEditorInput = input; settings = SVNUIPlugin.getPlugin().getDialogSettings(); } private boolean compareResultOK(CompareEditorInput input) { final Shell shell = getShell(); try { // run operation in separate thread and make it canceable SVNUIPlugin.getPlugin().getWorkbench().getProgressService().run(true, true, input); String message = input.getMessage(); if (message != null) { MessageDialog.openError(shell, Policy.bind("CompareDialog.compareFailed"), message); //$NON-NLS-1$ return false; } if (input.getCompareResult() == null) { MessageDialog.openInformation(shell, input.getTitle(), Policy.bind("CompareDialog.noDifferences")); //$NON-NLS-2$ //$NON-NLS-1$ return false; } return true; } catch (InterruptedException x) { // cancelled by user } catch (InvocationTargetException x) { MessageDialog.openError(shell, Policy.bind("CompareDialog.compareFailed"), //$NON-NLS-1$ x.getTargetException().getMessage()); } return false; } protected Point getInitialLocation(Point initialSize) { try { int x = settings.getInt("CompareDialog.location.x"); //$NON-NLS-1$ int y = settings.getInt("CompareDialog.location.y"); //$NON-NLS-1$ return new Point(x, y); } catch (NumberFormatException e) { } return super.getInitialLocation(initialSize); } protected Point getInitialSize() { try { int x = settings.getInt("CompareDialog.size.x"); //$NON-NLS-1$ int y = settings.getInt("CompareDialog.size.y"); //$NON-NLS-1$ return new Point(x, y); } catch (NumberFormatException e) { } return new Point(getShell().getSize().x - 300, getShell().getSize().y - 100); } public int open() { if (compareResultOK(compareEditorInput)) return super.open(); else return IDialogConstants.ABORT_ID; } /* (non-Javadoc) * Method declared on Dialog. */ protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true); //$NON-NLS-1$ } /* (non-Javadoc) * Method declared on Dialog. */ protected Control createDialogArea(Composite parent2) { Composite parent = (Composite) super.createDialogArea(parent2); Control c = compareEditorInput.createContents(parent); c.setLayoutData(new GridData(GridData.FILL_BOTH)); // Assert.isTrue(! compareEditorInput.getCompareConfiguration().isLeftEditable()); // Assert.isTrue(! compareEditorInput.getCompareConfiguration().isRightEditable()); Shell shell = c.getShell(); shell.setText(compareEditorInput.getTitle()); shell.setImage(compareEditorInput.getTitleImage()); PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, IHelpContextIds.COMPARE_DIALOG); applyDialogFont(parent); return parent; } protected void cancelPressed() { saveLocation(); super.cancelPressed(); } protected void okPressed() { saveLocation(); super.okPressed(); } private void saveLocation() { int x = getShell().getLocation().x; int y = getShell().getLocation().y; settings.put("CompareDialog.location.x", x); //$NON-NLS-1$ settings.put("CompareDialog.location.y", y); //$NON-NLS-1$ x = getShell().getSize().x; y = getShell().getSize().y; settings.put("CompareDialog.size.x", x); //$NON-NLS-1$ settings.put("CompareDialog.size.y", y); //$NON-NLS-1$ } }