/******************************************************************************* * Copyright (c) 2007, 2008 Symbian Software Limited 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: * Bala Torati (Symbian) - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.ui.templateengine.uitree.uiwidgets; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.DirectoryDialog; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.cdt.ui.templateengine.uitree.InputUIElement; import org.eclipse.cdt.ui.templateengine.uitree.UIAttributes; import org.eclipse.cdt.ui.templateengine.uitree.UIElement; /** * This gives a Label and Browse widget. */ public class UIBrowseWidget extends UITextWidget { /** * Browse Button of this widget. */ protected Button button; /** * If set to true, open a DirectoryDialog otherwise FileDialog */ protected boolean isDirectoryBrowser; /** * Constructor. * * @param uiAttribute * attribute associated with this widget. */ public UIBrowseWidget(UIAttributes uiAttribute, boolean isDirectoryBrowser) { super(uiAttribute); this.textValue = uiAttribute.get(InputUIElement.DEFAULT); this.isDirectoryBrowser= isDirectoryBrowser; } /** * create a Label and Browse widget, add it to UIComposite. set Layout for * the widgets to be added to UIComposite. set required parameters to the * Widgets. * * @param composite */ @Override public void createWidgets(UIComposite composite) { uiComposite = composite; label = new Label(uiComposite, SWT.NONE | SWT.LEFT); label.setText(uiAttributes.get(InputUIElement.WIDGETLABEL)); // set the tool tip text if (uiAttributes.get(UIElement.DESCRIPTION) != null){ String tipText = uiAttributes.get(UIElement.DESCRIPTION); tipText = tipText.replaceAll("\\\\r\\\\n", "\r\n"); //$NON-NLS-1$, //$NON-NLS-2$ label.setToolTipText(tipText); } GridData gridData = new GridData(GridData.FILL_HORIZONTAL); gridData.widthHint = 70; Composite textConatiner = new Composite(uiComposite, SWT.NONE); textConatiner.setLayout(new GridLayout(2, false)); textConatiner.setLayoutData(gridData); text = new Text(textConatiner, SWT.SINGLE | SWT.LEFT | SWT.BORDER); text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); text.addModifyListener(this); text.setText(textValue); button = new Button(textConatiner, SWT.PUSH | SWT.LEFT); button.setText(InputUIElement.BROWSELABEL); button.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent event) { onBrowsePushed(); } }); } protected void onBrowsePushed() { String fileName; if(isDirectoryBrowser) { fileName= new DirectoryDialog(uiComposite.getShell()).open(); } else { fileName= new FileDialog(uiComposite.getShell()).open(); } if (fileName != null) { textValue = fileName.toString(); text.setText(textValue); } } /** * call the dispose method on the widgets. This is to ensure that the * widgets are properly disposed. */ @Override public void disposeWidget() { label.dispose(); text.dispose(); button.dispose(); } }