/*******************************************************************************
* 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.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.jboss.tools.common.model.ui.widgets.IWidgetSettings;
public class TableSelectionFieldEditor extends ExtendedFieldEditor implements IPropertyFieldEditor, IFieldEditor {
protected IPropertyEditor propertyEditor;
protected TableViewer tableViewer;
//protected Table table;
protected IStructuredContentProvider structuredContentProvider;
protected ILabelProvider labelProvider;
protected ISelectionProvider selectionProvider;
protected ISelectionChangedListener selectionChangedListener;
public TableSelectionFieldEditor() {}
public TableSelectionFieldEditor(IWidgetSettings settings) {
super(settings);
}
// FieldEditor
protected void adjustForNumColumns(int numColumns) {
}
protected void doFillIntoGrid(Composite parent, int numColumns) {
Control control = this.getLabelComposite(parent);
GridData gd = new GridData();
gd.horizontalSpan = numColumns;
control.setLayoutData(gd);
control = this.createTableControl(parent);
gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = numColumns;
control.setLayoutData(gd);
}
protected void doLoad() {
}
protected void doLoadDefault() {
}
protected void doStore() {
}
public int getNumberOfControls() {
return 1;
}
// IPropertyFieldEditor
public void setPropertyEditor(IPropertyEditor propertyEditor) {
this.propertyEditor = propertyEditor;
if (propertyEditor!=null) {
setLabelText(propertyEditor.getLabelText());
structuredContentProvider = (IStructuredContentProvider)propertyEditor.getAdapter(IStructuredContentProvider.class);
labelProvider = (ILabelProvider)propertyEditor.getAdapter(ILabelProvider.class);
selectionProvider = (ISelectionProvider)propertyEditor.getAdapter(ISelectionProvider.class);
selectionChangedListener = (ISelectionChangedListener)propertyEditor.getAdapter(ISelectionChangedListener.class);
}
}
// IFieldEditor
public Control[] getControls(Composite parent) {
return new Control[] {getLabelComposite(parent), createTableControl(parent)};
}
protected Control getTableControl() {
if (tableViewer!=null) {
return tableViewer.getControl();
}
return null;
}
protected Control createTableControl(Composite parent) {
if (tableViewer==null) {
tableViewer = new TableViewer(parent, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER );
//tableViewer.setColumnProperties(new String[] {"Key1","Key2"});
//tableViewer.setCellModifier(new CM());
//tableViewer.setCellEditors(new CellEditor[]{null, new TextCellEditor(tableViewer.getTable(), SWT.NONE)});
tableViewer.setLabelProvider(labelProvider);
tableViewer.setContentProvider(structuredContentProvider);
tableViewer.setInput(structuredContentProvider);
tableViewer.addSelectionChangedListener(selectionChangedListener);
tableViewer.setSelection(selectionProvider.getSelection());
}
return tableViewer.getControl();
}
public void setEnabled(boolean enabled){
super.setEnabled(enabled);
if (getTableControl()!=null) {
getTableControl().setEnabled(enabled);
}
}
public void cut() {
}
public void copy() {
}
public void paste() {
}
public void delete() {
}
}