/*******************************************************************************
* 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.editor.form;
import org.jboss.tools.common.model.ui.attribute.adapter.XChildrenTableStructuredAdapter;
import org.jboss.tools.common.model.ui.attribute.editor.IFieldEditor;
import org.jboss.tools.common.model.ui.attribute.editor.TableStructuredEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
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.Label;
import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.common.model.ui.forms.ExpandableForm;
import org.jboss.tools.common.model.ui.widgets.IWidgetSettings;
import org.jboss.tools.common.model.ui.widgets.WhiteSettings;
public class SampleChildForm extends ExpandableForm {
private XModelObject xmo;
// private XModel model;
private IWidgetSettings settings = WhiteSettings.getWhite();
private TableStructuredEditor tableEditor;
private XChildrenTableStructuredAdapter tableAdapter;
private static final String FORM_DESCRIPTION = "SampleChildForm.description"; //$NON-NLS-1$
private static final String FORM_HEADER = "SampleChildForm.header"; //$NON-NLS-1$
public SampleChildForm() {}
public void dispose() {
super.dispose();
if (tableEditor!=null) tableEditor.dispose();
tableEditor = null;
if (tableAdapter!=null) tableAdapter.dispose();
tableAdapter = null;
}
protected Control createClientArea(Composite parent, IWidgetSettings factory) {
Composite composite = new Composite(parent, SWT.NONE);
settings.setupControl(composite);
GridLayout layout = new GridLayout(2,Boolean.FALSE.booleanValue());
layout.horizontalSpacing = 5;
layout.verticalSpacing = 5;
layout.marginHeight = 5;
layout.marginWidth = 5;
composite.setLayout(layout);
Control[] control;
GridData gd;
Label label = new Label(composite, SWT.WRAP);
settings.setupControl(label);
label.setText(FORM_DESCRIPTION);
gd = new GridData();
gd.horizontalSpan = 2;
label.setLayoutData(gd);
control = ((IFieldEditor)tableEditor.getFieldEditor(composite)).getControls(composite);
control[0].dispose(); // cannot show label
gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = 2;
control[1].setLayoutData(gd);
composite.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent e) {
dispose();
}
});
return composite;
}
public void initialize(Object model) {
this.xmo = (XModelObject)model;
this.model = xmo.getModel();
//this.support.init(xmo);
//this.support.setAutoStore(Boolean.TRUE.booleanValue());
this.setHeadingText(FORM_HEADER);
this.tableAdapter = new XChildrenTableStructuredAdapter();
//this.tableAdapter.setShownEntities(new String[] {"XXXXX"});
this.tableAdapter.getActionMapping().clear();
this.tableAdapter.getActionMapping().put(TableStructuredEditor.ADD_ACTION,"CreateActions.CreateFilter"); //$NON-NLS-1$
this.tableAdapter.getActionMapping().put(TableStructuredEditor.REMOVE_ACTION,"DeleteActions.Delete"); //$NON-NLS-1$
this.tableAdapter.getActionMapping().put(TableStructuredEditor.EDIT_ACTION,"Properties.Properties"); //$NON-NLS-1$
this.tableAdapter.getActionMapping().put(TableStructuredEditor.UP_ACTION,"%internal%"); //$NON-NLS-1$
this.tableAdapter.getActionMapping().put(TableStructuredEditor.DOWN_ACTION,"%internal%"); //$NON-NLS-1$
this.tableAdapter.setShownProperties(new String[] {"name"}); //$NON-NLS-1$
this.tableAdapter.setColumnLabels(new String[] {"Name"});
this.tableAdapter.setWidths(new int[] {100});
this.tableAdapter.setModelObject(xmo);
this.tableEditor = new TableStructuredEditor(settings);
this.tableEditor.setLabelText(""); //$NON-NLS-1$
this.tableEditor.setInput(this.tableAdapter);
}
public void update() {
}
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
if (tableEditor!=null) {
tableEditor.getFieldEditor(null).setEnabled(enabled);
}
}
}