Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/CDOResourceHyperlinkEditorShell.java')
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/CDOResourceHyperlinkEditorShell.java160
1 files changed, 160 insertions, 0 deletions
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/CDOResourceHyperlinkEditorShell.java b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/CDOResourceHyperlinkEditorShell.java
new file mode 100644
index 00000000000..25e4b2b607a
--- /dev/null
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/CDOResourceHyperlinkEditorShell.java
@@ -0,0 +1,160 @@
+/*****************************************************************************
+ * Copyright (c) 2009, 2013 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:
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr - Initial API and implementation
+ * Christian W. Damus (CEA LIST) - adapted for CDO repository resource hyperlinks
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.cdo.internal.ui.hyperlink;
+
+import org.eclipse.emf.cdo.eresource.EresourcePackage;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.jface.window.Window;
+import org.eclipse.papyrus.cdo.internal.ui.dialogs.BrowseRepositoryDialog;
+import org.eclipse.papyrus.infra.hyperlink.ui.AbstractEditHyperlinkDocumentShell;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.widgets.Display;
+
+import com.google.common.base.Objects;
+
+/**
+ * The editor shell facade for creation and editing of CDO resource hyperlinks.
+ */
+public class CDOResourceHyperlinkEditorShell extends AbstractEditHyperlinkDocumentShell {
+
+ private boolean usedefaultTooltip = true;
+
+ private CDOResourceHyperlink hyperlink;
+
+ private boolean okPressed;
+
+ public CDOResourceHyperlink getHyperlink() {
+ return hyperlink;
+ }
+
+ public void setHyperlink(CDOResourceHyperlink hyperlink) {
+ this.hyperlink = hyperlink;
+
+ getObjectLabeltext().setText(hyperlink.getHyperlink().toString());
+ getTooltipInputText().setText(hyperlink.getTooltipText());
+
+ usedefaultTooltip = Objects.equal(getObjectLabeltext().getText(), getTooltipInputText().getText());
+ getUseDefaultCheckBox().setSelection(usedefaultTooltip);
+ getTooltipInputText().setEditable(!usedefaultTooltip);
+ }
+
+ /**
+ * Open.
+ */
+ public boolean open() {
+ Display display = Display.getCurrent();
+
+ okPressed = false;
+
+ // code use to wait for an action from the user
+ getEditHyperlinkShell().pack();
+ getEditHyperlinkShell().open();
+ while(!getEditHyperlinkShell().isDisposed()) {
+ if(!display.readAndDispatch()) {
+ display.sleep();
+ }
+ }
+
+ return okPressed;
+ }
+
+ /**
+ * Instantiates me.
+ */
+ public CDOResourceHyperlinkEditorShell() {
+ super();
+
+ createEditHyperlinkShell();
+
+ // 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().addMouseListener(new MouseAdapter() {
+
+ @Override
+ public void mouseUp(MouseEvent e) {
+ usedefaultTooltip = getUseDefaultCheckBox().getSelection();
+ if(usedefaultTooltip) {
+ getTooltipInputText().setEditable(false);
+ getTooltipInputText().setText(getObjectLabeltext().getText());
+ } else {
+ getTooltipInputText().setEditable(true);
+ }
+ }
+ });
+
+ getChooseDiagramButton().addMouseListener(new MouseAdapter() {
+
+ @Override
+ public void mouseDown(MouseEvent e) {
+ BrowseRepositoryDialog browse = new BrowseRepositoryDialog(getEditHyperlinkShell(), Messages.CDOResourceHyperlinkEditorShell_title, Messages.CDOResourceHyperlinkEditorShell_message, null, SWT.OPEN);
+ browse.setBlockOnOpen(true);
+
+ String initialURIString = getObjectLabeltext().getText().trim();
+ if(!initialURIString.isEmpty()) {
+ browse.setInitialURI(URI.createURI(initialURIString));
+ }
+
+ // select resource nodes of file or model kind, not folders
+ browse.setNodeTypeFilter(EresourcePackage.Literals.CDO_RESOURCE_LEAF);
+
+ if(browse.open() == Window.OK) {
+ URI selected = browse.getSelectedURI();
+ if(selected != null) {
+ getObjectLabeltext().setText(selected.toString());
+ }
+
+ if(usedefaultTooltip) {
+ getTooltipInputText().setText(selected.toString());
+ }
+ }
+ }
+ });
+
+ // listener to cancel
+ this.getCancelButton().addMouseListener(new MouseAdapter() {
+
+ @Override
+ public void mouseDown(MouseEvent e) {
+ hyperlink = null;
+ getEditHyperlinkShell().close();
+ }
+ });
+ // listener to click on OK
+ this.getOkButton().addMouseListener(new MouseAdapter() {
+
+ @Override
+ public void mouseDown(MouseEvent e) {
+ if(hyperlink == null) {
+ hyperlink = new CDOResourceHyperlink();
+ }
+
+ hyperlink.setHyperlink(URI.createURI(getObjectLabeltext().getText().trim()));
+ hyperlink.setTooltipText(getTooltipInputText().getText().trim());
+
+ okPressed = true;
+
+ getEditHyperlinkShell().close();
+ }
+ });
+ }
+}

Back to the top