/******************************************************************************* * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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: * Exadel, Inc. and Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.model.ui.attribute.editor; import org.jboss.tools.common.model.ui.attribute.IPropertyDescriptorEx; import org.eclipse.jface.viewers.TreeViewer; 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.Text; import org.jboss.tools.common.model.ui.widgets.IWidgetSettings; public class TreeFieldEditor extends ExtendedFieldEditor { protected IPropertyDescriptorEx description; private TreeViewer tree = null; private Text text; private String stringValue; private Composite treeAndText; public TreeFieldEditor() {} public TreeFieldEditor(IWidgetSettings settings) { super(settings); } public TreeFieldEditor(String name, String labelText, Composite parent) { init(name, labelText); createControl(parent); } protected void adjustForNumColumns(int numColumns) { Control control = getLabelComposite(); ((GridData)control.getLayoutData()).horizontalSpan = numColumns; ((GridData)treeAndText.getLayoutData()).horizontalSpan = numColumns - 1; } protected void doFillIntoGrid(Composite parent, int numColumns) { Control control = getLabelComposite(parent); GridData gd = new GridData(); //gd.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING; gd.verticalAlignment = GridData.GRAB_VERTICAL; control.setLayoutData(gd); treeAndText = getTreeAndTextControl(parent); gd = new GridData(GridData.FILL_HORIZONTAL); gd.verticalAlignment = GridData.FILL; gd.horizontalSpan = numColumns - 1; gd.grabExcessHorizontalSpace = true; treeAndText.setLayoutData(gd); } protected void doLoad() { if (treeAndText != null) { // String s = getPreferenceStore().getString(getPreferenceName()); // TODO: } } protected void doLoadDefault() { if (treeAndText != null) { // String s = getPreferenceStore().getDefaultString(getPreferenceName()); // TODO: } } protected void doStore() { if (treeAndText != null) { // TODO: } } public int getNumberOfControls() { return 2; } protected Control getTreeControl() { if (tree!=null) return tree.getControl(); return null; } protected Control getTextControl() { return text; } protected Control createTreeControl(Composite parent) { if (this.tree==null) { tree = new TreeViewer(parent, SWT.BORDER); } return tree.getControl(); } protected Control createTextControl(Composite parent) { if (this.text==null) { text = new Text(parent, SWT.SINGLE | SWT.BORDER); } return text; } protected Composite getTreeAndTextControl(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(1,false); composite.setLayout(layout); layout.horizontalSpacing = 0; layout.verticalSpacing = 0; layout.marginHeight = 0; layout.marginWidth = 0; GridData gd; Control control; control = createTreeControl(composite); gd = new GridData(GridData.FILL_BOTH); control.setLayoutData(gd); control = createTextControl(composite); gd = new GridData(GridData.FILL_HORIZONTAL); control.setLayoutData(gd); return composite; } public String getStringValue() { return stringValue; } public void setStringValue(String string) { stringValue = string; } public IPropertyDescriptorEx getDescription() { return description; } public void setDescription(IPropertyDescriptorEx description) { this.description = description; } public void setEnabled(boolean enabled){ super.setEnabled(enabled); if (getTreeControl()!=null) getTreeControl().setEnabled(enabled); if (getTextControl()!=null) getTextControl().setEnabled(enabled); } public void cut() { } public void copy() { } public void paste() { } public void delete() { } }