/**
* This file is protected by Copyright.
* Please refer to the COPYRIGHT file distributed with this source distribution.
*
* This file is part of REDHAWK IDE.
*
* 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.
*
*/
package gov.redhawk.ui.editor;
import gov.redhawk.ui.parts.StructuredViewerPart;
import gov.redhawk.ui.parts.TreePart;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.forms.widgets.FormToolkit;
public abstract class TreeSection extends StructuredViewerSection {
protected boolean fHandleDefaultButton = true;
class PartAdapter extends TreePart {
public PartAdapter(String[] buttonLabels) {
super(buttonLabels);
}
public void selectionChanged(IStructuredSelection selection) {
getManagedForm().fireSelectionChanged(TreeSection.this, selection);
TreeSection.this.selectionChanged(selection);
}
public void handleDoubleClick(IStructuredSelection selection) {
TreeSection.this.handleDoubleClick(selection);
}
public void buttonSelected(Button button, int index) {
TreeSection.this.buttonSelected(index);
if (fHandleDefaultButton) {
button.getShell().setDefaultButton(null);
}
}
protected void createButtons(Composite parent, FormToolkit toolkit) {
super.createButtons(parent, toolkit);
enableButtons();
if (parent.getData("filtered") != null) { //$NON-NLS-1$
GridLayout layout = (GridLayout) fButtonContainer.getLayout();
layout.marginHeight = 28;
}
}
protected TreeViewer createTreeViewer(final Composite parent, final int style) {
final TreeViewer viewer = TreeSection.this.createTreeViewer(parent, style);
getPage().getEditor().createContextMenuFor(viewer);
return viewer;
}
}
/**
* Constructor for TableSection.
* @param formPage
*/
public TreeSection(ScaFormPage formPage, Composite parent, int style, String[] buttonLabels) {
super(formPage, parent, style, buttonLabels);
}
protected StructuredViewerPart createViewerPart(String[] buttonLabels) {
return new PartAdapter(buttonLabels);
}
protected TreePart getTreePart() {
return (TreePart) fViewerPart;
}
protected TreeViewer createTreeViewer(final Composite parent, final int style) {
final TreeViewer viewer = new TreeViewer(parent, style);
return viewer;
}
protected void selectionChanged(IStructuredSelection selection) {
}
/**
* Expands or collapsed selected node according to its current state
* @param selection
*/
protected void handleDoubleClick(IStructuredSelection selection) {
TreeViewer viewer = (TreeViewer) fViewerPart.getViewer();
boolean expandedState = viewer.getExpandedState(selection.getFirstElement());
viewer.setExpandedState(selection.getFirstElement(), !expandedState);
}
protected void enableButtons() {
}
}