/* ****************************************************************************** * Copyright (c) 2006-2012 XMind Ltd. and others. * * This file is a part of XMind 3. XMind releases 3 and * above are dual-licensed under the Eclipse Public License (EPL), * which is available at http://www.eclipse.org/legal/epl-v10.html * and the GNU Lesser General Public License (LGPL), * which is available at http://www.gnu.org/licenses/lgpl.html * See http://www.xmind.net/license.html for details. * * Contributors: * XMind Ltd. - initial API and implementation *******************************************************************************/ package org.xmind.ui.internal.dialogs; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.SWT; 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.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IEditorPart; import org.xmind.ui.dialogs.HyperlinkPage; /** * * @author Frank Shaka * */ public class WebHyperlinkPage extends HyperlinkPage implements Listener { private Composite composite; private Text text; private boolean isModifyingValue = false; public WebHyperlinkPage() { } public void init(IEditorPart editor, IStructuredSelection selection) { } /** * */ public void createControl(Composite parent) { composite = new Composite(parent, SWT.NONE); composite.setLayout(new GridLayout(1, false)); createLabel(composite); createText(composite); } private void createLabel(Composite parent) { Label label = new Label(parent, SWT.WRAP); label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); ((GridData) label.getLayoutData()).widthHint = 380; label.setText(DialogMessages.WebHyperlinkPage_label); } /** * @param parent */ private void createText(Composite parent) { text = new Text(parent, SWT.SINGLE | SWT.BORDER); text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); text.setText("http://"); //$NON-NLS-1$ text.addListener(SWT.Modify, this); text.addListener(SWT.FocusIn, this); } public void setValue(String value) { super.setValue(value); if (!isModifyingValue) { if (text != null && !text.isDisposed()) { if (value != null) { text.setText(value); } } } } public void dispose() { } public Control getControl() { return composite; } public void setFocus() { if (text != null && !text.isDisposed()) { text.setFocus(); } } /* * (non-Javadoc) * * @see * org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets. * Event) */ public void handleEvent(Event event) { if (event.widget == text) { if (event.type == SWT.Modify) { isModifyingValue = true; setValue(text.getText()); isModifyingValue = false; boolean isFinish = true; String content = text.getText().trim(); if ("".equals(content)) //$NON-NLS-1$ isFinish = false; setCanFinish(isFinish); setErrorMessage(isFinish ? null : DialogMessages.WebHyperlinkPage_nullHyper_message); } else if (event.type == SWT.FocusIn) { text.selectAll(); } } } }