Java tutorial
/******************************************************************************* * Copyright (c) 2014 Salesforce.com, inc.. * 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: * Salesforce.com, inc. - initial API and implementation ******************************************************************************/ package com.salesforce.ide.upgrade.ui.wizards; import java.lang.reflect.InvocationTargetException; import org.eclipse.compare.CompareEditorInput; import org.eclipse.compare.internal.ICompareContextIds; import org.eclipse.compare.internal.ResizableDialog; import org.eclipse.compare.internal.Utilities; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.jface.util.Assert; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; 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.actions.WorkspaceModifyOperation; // TODO remove when we drop 3.2 support public class CompareDialog extends ResizableDialog implements IPropertyChangeListener { private CompareEditorInput fCompareEditorInput; CompareDialog(Shell shell, CompareEditorInput input) { super(shell, null); Assert.isNotNull(input); fCompareEditorInput = input; fCompareEditorInput.addPropertyChangeListener(this); setHelpContextId(ICompareContextIds.COMPARE_DIALOG); } public boolean close() { if (super.close()) { if (fCompareEditorInput != null) fCompareEditorInput.addPropertyChangeListener(this); return true; } return false; } /* * (non-Javadoc) Method declared on Dialog. */ protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, false); } public void propertyChange(PropertyChangeEvent event) { } /* * (non-Javadoc) Method declared on Dialog. */ protected Control createDialogArea(Composite parent2) { Composite parent = (Composite) super.createDialogArea(parent2); Control c = fCompareEditorInput.createContents(parent); c.setLayoutData(new GridData(GridData.FILL_BOTH)); Shell shell = c.getShell(); shell.setText(fCompareEditorInput.getTitle()); shell.setImage(fCompareEditorInput.getTitleImage()); applyDialogFont(parent); return parent; } /* * (non-Javadoc) Method declared on Window. */ public int open() { int rc = super.open(); if (rc == OK && fCompareEditorInput.isSaveNeeded()) { WorkspaceModifyOperation operation = new WorkspaceModifyOperation() { public void execute(IProgressMonitor pm) throws CoreException { fCompareEditorInput.saveChanges(pm); } }; Shell shell = getParentShell(); ProgressMonitorDialog pmd = new ProgressMonitorDialog(shell); try { operation.run(pmd.getProgressMonitor()); } catch (InterruptedException x) { // NeedWork } catch (OperationCanceledException x) { // NeedWork } catch (InvocationTargetException x) { String title = Utilities.getString("CompareDialog.saveErrorTitle"); //$NON-NLS-1$ String msg = Utilities.getString("CompareDialog.saveErrorMessage"); //$NON-NLS-1$ MessageDialog.openError(shell, title, msg + x.getTargetException().getMessage()); } } return rc; } }