diff options
Diffstat (limited to 'plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.hyperlink/src/org/eclipse/papyrus/infra/gmfdiag/hyperlink/ui/EditorHyperLinkEditorShell.java')
-rw-r--r-- | plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.hyperlink/src/org/eclipse/papyrus/infra/gmfdiag/hyperlink/ui/EditorHyperLinkEditorShell.java | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.hyperlink/src/org/eclipse/papyrus/infra/gmfdiag/hyperlink/ui/EditorHyperLinkEditorShell.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.hyperlink/src/org/eclipse/papyrus/infra/gmfdiag/hyperlink/ui/EditorHyperLinkEditorShell.java new file mode 100644 index 00000000000..15ee47a6b54 --- /dev/null +++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.hyperlink/src/org/eclipse/papyrus/infra/gmfdiag/hyperlink/ui/EditorHyperLinkEditorShell.java @@ -0,0 +1,184 @@ +/***************************************************************************** + * Copyright (c) 2011, 2014 CEA LIST 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: + * Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation + * Christian W. Damus (CEA) - bug 431397 + * + *****************************************************************************/ +package org.eclipse.papyrus.infra.gmfdiag.hyperlink.ui; + +import org.eclipse.core.runtime.Assert; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.osgi.util.NLS; +import org.eclipse.papyrus.infra.core.services.ServiceException; +import org.eclipse.papyrus.infra.emf.utils.ServiceUtilsForEObject; +import org.eclipse.papyrus.infra.gmfdiag.hyperlink.helper.EditorHyperLinkHelper; +import org.eclipse.papyrus.infra.gmfdiag.hyperlink.messages.Messages; +import org.eclipse.papyrus.infra.gmfdiag.hyperlink.object.HyperLinkEditor; +import org.eclipse.papyrus.infra.hyperlink.Activator; +import org.eclipse.papyrus.infra.hyperlink.ui.AbstractEditHyperlinkDocumentShell; +import org.eclipse.papyrus.infra.services.labelprovider.service.LabelProviderService; +import org.eclipse.papyrus.infra.ui.editorsfactory.IPageIconsRegistry; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.widgets.Display; + +/** + * + * This shell is used to find the editors + * + */ +public class EditorHyperLinkEditorShell extends AbstractEditHyperlinkDocumentShell { + + /** The usedefault tooltip. */ + protected boolean usedefaultTooltip = true; + + /** The hyper link diagram. */ + protected HyperLinkEditor hyperLinkEditor; + + /** The editor registry. */ + private IPageIconsRegistry editorRegistry; + + /** The amodel. */ + protected final EObject amodel; + + /** + * Open. + */ + public void open() { + Display display = Display.getCurrent(); + // code use to wait for an action from the user + + // getEditHyperlinkShell().setBounds(500, 500, 600, 120); + getEditHyperlinkShell().pack(); + getEditHyperlinkShell().open(); + while (!getEditHyperlinkShell().isDisposed()) { + if (!display.readAndDispatch()) { + display.sleep(); + } + } + } + + /** + * Instantiates a new editor hyperlink diagram shell. + * + * @param editorFactoryRegistry + * the editor factory registry + * @param model + * the model + */ + public EditorHyperLinkEditorShell(IPageIconsRegistry editorFactoryRegistry, EObject model) { + super(); + this.amodel = model; + this.editorRegistry = editorFactoryRegistry; + createEditHyperlinkShell(); + getObjectcLabel().setText(Messages.EditorHyperLinkEditorShell_View); // TODO : where is it used? + + // intialize "use default" check box + getUseDefaultCheckBox().setSelection(usedefaultTooltip); + getObjectLabeltext().setEditable(false); + if (usedefaultTooltip) { + getTooltipInputText().setEditable(false); + getTooltipInputText().setText(getObjectLabeltext().getText()); + } + // add listener "use default button" + getUseDefaultCheckBox().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + usedefaultTooltip = getUseDefaultCheckBox().getSelection(); + if (usedefaultTooltip) { + getTooltipInputText().setEditable(false); + getTooltipInputText().setText(getObjectLabeltext().getText()); + } else { + getTooltipInputText().setEditable(true); + } + } + }); + + // launch a new editor to choose or create diagrams + getChooseDiagramButton().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + EditorLookForEditorShell editorLookForDiagram = new EditorLookForEditorShell(editorRegistry, amodel); + editorLookForDiagram.open(); + Object selection = editorLookForDiagram.getSelectedEditor(); + if (selection == null) {// cancelled or no selection + // nothing to do + } else { + + EditorHyperLinkHelper helper = new EditorHyperLinkHelper(); + hyperLinkEditor = helper.getHyperLinkObjectFor(selection); + Assert.isNotNull(hyperLinkEditor, NLS.bind(Messages.EditorHyperLinkEditorShell_ICanFindTheHyperLinkEditorObject, selection)); + hyperLinkEditor.setObject(selection); + + // TODO : remove this dependency + ILabelProvider labelProvider; + try { + labelProvider = ServiceUtilsForEObject.getInstance().getServiceRegistry(amodel).getService(LabelProviderService.class).getLabelProvider(); + } catch (ServiceException ex) { + Activator.log.error(ex); + labelProvider = new LabelProvider(); + } + getObjectLabeltext().setText(labelProvider.getText(selection)); + if (usedefaultTooltip) { + getTooltipInputText().setText(getObjectLabeltext().getText()); + } + } + } + }); + + // listener to cancel + this.getCancelButton().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + hyperLinkEditor = null; + getEditHyperlinkShell().close(); + } + }); + // listener to click on OK + this.getOkButton().addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (hyperLinkEditor != null) { + hyperLinkEditor.setTooltipText(getTooltipInputText().getText().trim()); + // if diagram is null, maybe bad selection or other it + // return null! + if (hyperLinkEditor.getObject() == null) { + hyperLinkEditor = null; + } + } + getEditHyperlinkShell().close(); + } + }); + } + + /** + * Gets the hyper link diagram. + * + * @return the hyperLinkEditor maybe null, if cancel or bad selection + */ + public HyperLinkEditor getHyperLinkEditor() { + return hyperLinkEditor; + } + + /** + * Sets the hyper link diagram. + * + * @param hyperLinkEditor + * the hyperLinkEditor to set + */ + public void setHyperLinkEditor(HyperLinkEditor hyperLinkEditor) { + // TODO + getTooltipInputText().setText(hyperLinkEditor.getTooltipText()); + this.hyperLinkEditor = hyperLinkEditor; + } +} |