/***************************************************************************** * Copyright (c) 2009 CEA LIST. * * * 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 * *****************************************************************************/ package org.eclipse.papyrus.infra.hyperlink.ui; import org.eclipse.papyrus.infra.hyperlink.messages.Messages; import org.eclipse.papyrus.infra.hyperlink.object.HyperLinkWeb; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.KeyListener; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.widgets.Display; /** * The Class HyperlinkWebEditor is used to add or modify an hyperlink web entry. * you can use the default button for the tooltip. */ public class EditorHyperLinkWebShell extends AbstractEditHyperlinkShell { /** The Constant HYPERLINKS_LABEL. */ protected static final String HYPERLINKS_LABEL = Messages.EditorHyperLinkWebShell_Hyperlinks; /** The Constant HTTP. */ protected static final String HTTP = "http://"; //$NON-NLS-1$ /** The hyper link web. */ private HyperLinkWeb hyperLinkWeb = null; /** The usedefault tooltip. */ private boolean usedefaultTooltip = true; /** * Open. */ public void open() { Display display = Display.getCurrent(); // code use to wait for an action from the user getEditHyperlinkShell().pack(); // getEditHyperlinkShell().setBounds(500, 500, 600, 120); getEditHyperlinkShell().open(); while(!getEditHyperlinkShell().isDisposed()) { if(!display.readAndDispatch()) { display.sleep(); } } } /** * Instantiates a new hyperlink web editor. */ public EditorHyperLinkWebShell() { super(); createEditHyperlinkShell(); this.getObjectcLabel().setText(HYPERLINKS_LABEL); // fill information if(hyperLinkWeb != null) { this.getObjectLabeltext().setText(hyperLinkWeb.getHyperLinkWeb()); this.getTooltipInputText().setText(hyperLinkWeb.getTooltipText()); } else { this.getObjectLabeltext().setText(HTTP); this.getObjectLabeltext().setSelection(HTTP.length()); } // listener to cancel this.getCancelButton().addMouseListener(new MouseListener() { public void mouseUp(MouseEvent e) { } public void mouseDown(MouseEvent e) { hyperLinkWeb = null; getEditHyperlinkShell().close(); } public void mouseDoubleClick(MouseEvent e) { } }); // listener to click on OK this.getOkButton().addMouseListener(new MouseListener() { public void mouseUp(MouseEvent e) { } public void mouseDown(MouseEvent e) { if(hyperLinkWeb == null) { hyperLinkWeb = new HyperLinkWeb(); } hyperLinkWeb.setHyperLinkWeb(getObjectLabeltext().getText().trim()); hyperLinkWeb.setTooltipText(getTooltipInputText().getText().trim()); getEditHyperlinkShell().close(); } public void mouseDoubleClick(MouseEvent e) { } }); // intialize "use default" check box getUseDefaultCheckBox().setSelection(usedefaultTooltip); if(usedefaultTooltip) { getTooltipInputText().setEditable(false); getTooltipInputText().setText(getObjectLabeltext().getText()); } // add listener "use default button" getUseDefaultCheckBox().addMouseListener(new MouseListener() { public void mouseUp(MouseEvent e) { usedefaultTooltip = getUseDefaultCheckBox().getSelection(); if(usedefaultTooltip) { getTooltipInputText().setEditable(false); getTooltipInputText().setText(getObjectLabeltext().getText()); } else { getTooltipInputText().setEditable(true); } } public void mouseDown(MouseEvent e) { } public void mouseDoubleClick(MouseEvent e) { } }); // add a key listener on inputText to synchronize with the tooltip in // the case of use // default getObjectLabeltext().addKeyListener(new KeyListener() { public void keyReleased(KeyEvent e) { if(usedefaultTooltip) { getTooltipInputText().setText(getObjectLabeltext().getText()); } } public void keyPressed(KeyEvent e) { } }); } /** * Gets the hyper link web. * * @return the hyperLinkWeb */ public HyperLinkWeb getHyperLinkWeb() { return hyperLinkWeb; } /** * Sets the hyper link web. * * @param hyperLinkWeb * the hyperLinkWeb to set */ public void setHyperLinkWeb(HyperLinkWeb hyperLinkWeb) { this.hyperLinkWeb = hyperLinkWeb; this.getObjectLabeltext().setText(hyperLinkWeb.getHyperLinkWeb()); this.getTooltipInputText().setText(hyperLinkWeb.getTooltipText()); } }