diff options
Diffstat (limited to 'bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/XSDGraphViewerDialog.java')
-rw-r--r-- | bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/XSDGraphViewerDialog.java | 416 |
1 files changed, 0 insertions, 416 deletions
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/XSDGraphViewerDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/XSDGraphViewerDialog.java deleted file mode 100644 index 33adbdeff4..0000000000 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/dialogs/XSDGraphViewerDialog.java +++ /dev/null @@ -1,416 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2010 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.eclipse.wst.xsd.ui.internal.dialogs; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.draw2d.ColorConstants; -import org.eclipse.gef.EditPartFactory; -import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.Separator; -import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.jface.dialogs.PopupDialog; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ControlEvent; -import org.eclipse.swt.events.ControlListener; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.forms.events.HyperlinkEvent; -import org.eclipse.ui.forms.events.IHyperlinkListener; -import org.eclipse.ui.forms.widgets.Hyperlink; -import org.eclipse.wst.xsd.ui.internal.adapters.XSDAdapterFactory; -import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.RootContentEditPart; -import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.RootEditPart; -import org.eclipse.wst.xsd.ui.internal.adt.typeviz.design.figures.TypeVizFigureFactory; -import org.eclipse.wst.xsd.ui.internal.common.actions.OpenInNewEditor; -import org.eclipse.wst.xsd.ui.internal.common.util.Messages; -import org.eclipse.wst.xsd.ui.internal.design.editparts.XSDEditPartFactory; -import org.eclipse.wst.xsd.ui.internal.editor.XSDEditorPlugin; -import org.eclipse.xsd.XSDConcreteComponent; -import org.eclipse.xsd.XSDSchema; - -public class XSDGraphViewerDialog extends PopupDialog -{ - protected Object model; - protected ScrollingGraphicalViewer viewer; - protected IOpenInNewEditor openInNewEditorHelper; - private OpenEditorLinkListener linkListener; - private Label nsInfoLabel; - private Hyperlink link; - private String infoText; - private Font infoFont; - private String uniqueID; - private PreviewControlListener moveListener; - - private static String X_ORIGIN = "DIALOG_X_ORIGIN"; //$NON-NLS-1$ - private static String Y_ORIGIN = "DIALOG_Y_ORIGIN"; //$NON-NLS-1$ - private boolean isHighContrast = false; - - public XSDGraphViewerDialog(Shell parentShell, String titleText, String infoText, Object model, String ID) - { - // INFOPOPUP_SHELLSTYLE works properly on both Windows and Linux. - super(parentShell, INFOPOPUP_SHELLSTYLE, true, true, true, true, false, titleText, infoText); - setModel(model); - linkListener = new OpenEditorLinkListener(); - this.infoText = infoText; - this.uniqueID = ID; - Assert.isTrue(ID != null && ID.length() > 0); - moveListener = new PreviewControlListener(); - try - { - isHighContrast = Display.getDefault().getHighContrast(); - } - catch (Exception e) { - // ignore - } - create(); - } - - public void setOpenExternalEditor(IOpenInNewEditor helper) - { - this.openInNewEditorHelper = helper; - } - - protected void fillDialogMenu(IMenuManager dialogMenu) - { - super.fillDialogMenu(dialogMenu); - dialogMenu.add(new Separator()); - dialogMenu.add(new ClosePopup()); - dialogMenu.add(new Separator()); - dialogMenu.add(new SetOpenInEditor()); - } - - protected Control createDialogArea(Composite parent) - { - viewer = new ScrollingGraphicalViewer(); - Composite c = (Composite)super.createDialogArea(parent); - - if (isHighContrast) - { - c.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); - } - else - { - c.setBackground(ColorConstants.white); - } - c.setLayout(new FillLayout()); - - RootEditPart root = new RootEditPart(); - viewer.setRootEditPart(root); - - viewer.createControl(c); - - // The graphical viewer tool tip processing creates an extra shell which - // interferes with the PopupDialog's deactivation logic. - removeMouseListeners(viewer.getControl()); - - if (isHighContrast) - { - viewer.getControl().setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); - } - else - { - viewer.getControl().setBackground(ColorConstants.white); - } - EditPartFactory editPartFactory = new XSDEditPartFactory(new TypeVizFigureFactory()); - viewer.setEditPartFactory(editPartFactory); - - RootContentEditPart rootContentEditPart = new RootContentEditPart(); - rootContentEditPart.setModel(model); - viewer.setContents(rootContentEditPart); - - getShell().addControlListener(moveListener); - return c; - } - - private void removeMouseListeners(Control control) - { - Listener[] listeners = control.getListeners(SWT.MouseEnter); - control.removeListener(SWT.MouseEnter, listeners[0]); - - listeners = control.getListeners(SWT.MouseExit); - control.removeListener(SWT.MouseExit, listeners[0]); - - listeners = control.getListeners(SWT.MouseHover); - control.removeListener(SWT.MouseHover, listeners[0]); - - listeners = control.getListeners(SWT.MouseMove); - control.removeListener(SWT.MouseMove, listeners[0]); - - listeners = control.getListeners(SWT.MouseDown); - control.removeListener(SWT.MouseDown, listeners[0]); - - listeners = control.getListeners(SWT.MouseUp); - control.removeListener(SWT.MouseUp, listeners[0]); - - listeners = control.getListeners(SWT.MouseDoubleClick); - control.removeListener(SWT.MouseDoubleClick, listeners[0]); - } - - protected Control createInfoTextArea(Composite parent) - { - Composite infoComposite = new Composite(parent, SWT.NONE); - GridLayout gridLayout = new GridLayout(2, false); - gridLayout.marginHeight = 0; - gridLayout.marginWidth = 0; - infoComposite.setLayout(gridLayout); - GridData gd = new GridData(GridData.FILL_BOTH); - infoComposite.setLayoutData(gd); - - nsInfoLabel = new Label(infoComposite, SWT.LEFT); - nsInfoLabel.setText(infoText); - - Font font = nsInfoLabel.getFont(); - FontData[] fontDatas = font.getFontData(); - for (int i = 0; i < fontDatas.length; i++) - { - fontDatas[i].setHeight(fontDatas[i].getHeight() * 9 / 10); - } - infoFont = new Font(nsInfoLabel.getDisplay(), fontDatas); - nsInfoLabel.setFont(infoFont); - gd = new GridData(GridData.FILL_HORIZONTAL | GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING); - nsInfoLabel.setLayoutData(gd); - nsInfoLabel.setForeground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW)); - - link = new Hyperlink(infoComposite, SWT.RIGHT); - // Remove mnemonic ampersand. It would be better to have a separate string in the future. - String label = Messages._UI_ACTION_OPEN_IN_NEW_EDITOR.replaceAll("&", ""); - link.setText(label); - link.setFont(infoFont); - link.addHyperlinkListener(linkListener); - return infoComposite; - } - - private void setModel(Object model) - { - Assert.isTrue(model instanceof XSDConcreteComponent); - this.model = XSDAdapterFactory.getInstance().adapt((XSDConcreteComponent) model); - } - - protected class SetOpenInEditor extends Action - { - public SetOpenInEditor() - { - super(Messages._UI_ACTION_OPEN_IN_NEW_EDITOR); - } - - public void run() - { - if (openInNewEditorHelper != null) - { - try - { - openInNewEditorHelper.openXSDEditor(); - } - catch (Exception e) - { - - } - } - } - } - - private class ClosePopup extends Action { - public ClosePopup() - { - super(Messages._UI_ACTION_CLOSE_SCHEMA_PREVIEW_POPUP); - } - - public void run() - { - close(); - } - } - - protected IDialogSettings getDialogSettings() - { - IDialogSettings settings= XSDEditorPlugin.getDefault().getDialogSettings().getSection(uniqueID); - if (settings == null) - settings= XSDEditorPlugin.getDefault().getDialogSettings().addNewSection(uniqueID); - - return settings; - } - - protected Point getInitialLocation(Point initialSize) - { - Point result = super.getInitialLocation(initialSize); - - IDialogSettings settings = getDialogSettings(); - if (settings != null) - { - try - { - - String prefix = uniqueID == null ? getClass().getName() : uniqueID; - int x = settings.getInt(prefix + X_ORIGIN); - int y = settings.getInt(prefix + Y_ORIGIN); - result = new Point(x, y); - Shell parent = getParentShell(); - if (parent != null) - { - Point parentLocation = parent.getLocation(); - result.x += parentLocation.x; - result.y += parentLocation.y; - } - } - catch (NumberFormatException e) - { - } - } - return result; - } - - protected void saveDialogBounds(Shell shell) - { - IDialogSettings settings = getDialogSettings(); - if (settings != null) - { - Point shellLocation = shell.getLocation(); - Shell parent = getParentShell(); - if (parent != null) - { - Point parentLocation = parent.getLocation(); - shellLocation.x -= parentLocation.x; - shellLocation.y -= parentLocation.y; - } - String prefix = uniqueID == null ? getClass().getName() : uniqueID; - settings.put(prefix + X_ORIGIN, shellLocation.x); - settings.put(prefix + Y_ORIGIN, shellLocation.y); - } - } - - - public boolean close() - { - if (getShell() == null || getShell().isDisposed()) - { - return true; - } - - getShell().removeControlListener(moveListener); - if (link != null) - link.removeHyperlinkListener(linkListener); - if (infoFont != null) - infoFont.dispose(); - infoFont = null; - return super.close(); - } - - private final class OpenEditorLinkListener implements IHyperlinkListener - { - - public void linkActivated(HyperlinkEvent e) - { - new SetOpenInEditor().run(); - close(); - } - - public void linkEntered(HyperlinkEvent e) - { - link.setForeground(ColorConstants.lightBlue); - } - - public void linkExited(HyperlinkEvent e) - { - link.setForeground(link.getParent().getForeground()); - } - - } - - protected class PreviewControlListener implements ControlListener - { - - public void controlMoved(ControlEvent e) - { - saveDialogBounds(getShell()); - } - - public void controlResized(ControlEvent e) - { - } - } - - /** - * @deprecated since 1.2.101 - * @param xsdComponent - * @param schema - * @param editorName - */ - public static void openNonXSDResourceSchema(XSDConcreteComponent xsdComponent, XSDSchema schema, String editorName) - { - openInlineSchema(getCurrentEditorInput(), xsdComponent, schema, editorName); - } - - public static void openInlineSchema(IEditorInput editorInput, XSDConcreteComponent xsdComponent, XSDSchema schema, String editorName) - { - OpenInNewEditor.openInlineSchema(editorInput, xsdComponent, schema, editorName); - } - - /** - * @deprecated - */ - public static void openXSDEditor(XSDConcreteComponent xsdComponent) - { - openXSDEditor(getCurrentEditorInput(), xsdComponent.getSchema(), xsdComponent); - } - - public static void openXSDEditor(IEditorInput editorInput, XSDSchema schema, XSDConcreteComponent xsdComponent) - { - OpenInNewEditor.openXSDEditor(editorInput, schema, xsdComponent); - } - - private static IEditorInput getCurrentEditorInput() - { - try - { - IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - IWorkbenchPage page = null; - if (workbenchWindow != null) - { - page = workbenchWindow.getActivePage(); - if (page != null) - { - IEditorPart editorPart = page.getActiveEditor(); - if (editorPart != null) - { - return editorPart.getEditorInput(); - } - } - } - } - catch (Exception e) - { - - } - return null; - } - - protected Control getFocusControl() - { - return link; - } -} |