/*****************************************************************************
* 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.HyperLinkDocument;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
/**
* The Class EditorHyperlinkDocumentShell.
*/
public class EditorHyperlinkDocumentShell extends AbstractEditHyperlinkDocumentShell {
/** The usedefault tooltip. */
protected boolean usedefaultTooltip = true;
/** The hyperlink document. */
protected HyperLinkDocument hyperlinkDocument;
/**
* Gets the hyperlink document.
*
* @return the hyperlinkDocument
*/
public HyperLinkDocument getHyperlinkDocument() {
return hyperlinkDocument;
}
/**
* Sets the hyperlink document.
*
* @param hyperlinkDocument
* the hyperlinkDocument to set
*/
public void setHyperlinkDocument(HyperLinkDocument hyperlinkDocument) {
this.hyperlinkDocument = hyperlinkDocument;
getObjectLabeltext().setText(getHyperlinkDocument().getHyperlinkDocument());
getTooltipInputText().setText(getHyperlinkDocument().getTooltipText());
}
/**
* 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 document shell.
*/
public EditorHyperlinkDocumentShell() {
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 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) {
}
});
getChooseDiagramButton().addMouseListener(new MouseListener() {
public void mouseUp(MouseEvent e) {
}
public void mouseDown(MouseEvent e) {
FileDialog fd = new FileDialog(getEditHyperlinkShell(), SWT.OPEN);
fd.setText(Messages.EditorHyperlinkDocumentShell_Open);
String[] filterExt = { "*.txt", "*.doc", "*.pdf", "*.*" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
fd.setFilterExtensions(filterExt);
String selected = fd.open();
if(selected != null) {
getObjectLabeltext().setText(selected);
if(usedefaultTooltip) {
getTooltipInputText().setText(selected);
}
}
}
public void mouseDoubleClick(MouseEvent e) {
}
});
// listener to cancel
this.getCancelButton().addMouseListener(new MouseListener() {
public void mouseUp(MouseEvent e) {
}
public void mouseDown(MouseEvent e) {
hyperlinkDocument = 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(hyperlinkDocument == null) {
hyperlinkDocument = new HyperLinkDocument();
}
hyperlinkDocument.setHyperlinkDocument(getObjectLabeltext().getText().trim());
hyperlinkDocument.setTooltipText(getTooltipInputText().getText().trim());
getEditHyperlinkShell().close();
}
public void mouseDoubleClick(MouseEvent e) {
}
});
}
}