in CasViewerEclipsePlugin/uimaj-ep-casviewer-core/src/main/java/org/apache/uima/casviewer/ui/internal/style/DefaultColorTreeSectionPart.java [220:467]
protected Section createContents ()
{
FormToolkit toolkit = managedForm.getToolkit();
Section section = getSection();
section.addControlListener(new ControlAdapter() {
public void controlResized(ControlEvent e) {
// section.layout(true);
managedForm.reflow(true);
}
});
// Expand | Collapse
section.addExpansionListener(new ExpansionAdapter() {
public void expansionStateChanged(ExpansionEvent e) {
// System.out.println("form.reflow");
// managedForm.getForm().layout(true);
// Point pt = __parent.getSize();
// System.err.println("parent x: " + pt.x + " ; parent y: " + pt.y);
// pt = getSection().getSize();
// System.err.println(" Section x: " + pt.x + " ; y: " + pt.y);
// if ( e.getState() ) {
// // Expand
// TableWrapData td = (TableWrapData) section.getLayoutData();
// td.maxHeight = 400;
// }
// __parent.layout(true);
// ((Composite) getSection().getClient()).layout(true);
// if (tree == null) {
// tree.layout(true);
// }
// __managedForm.getForm().layout(true);
managedForm.reflow(true);
// pt = getSection().getSize();
// System.err.println(" Section x: " + pt.x + " ; y: " + pt.y);
}
});
section.setExpanded(false);
///////////////////////////////////////////////////////////////////////
// Create ToolBar
// Composite sectionToolbarComposite = FormSection.createGridLayoutContainer (toolkit, section,
// 4, 0, 0);
// section.setTextClient(sectionToolbarComposite);
///////////////////////////////////////////////////////////////////////
// toolkit.createCompositeSeparator(section);
// Create Composite
Composite client = FormSection.createGridLayoutContainer (toolkit, section,
1, 10, 10);
GridData gd = new GridData(GridData.FILL_BOTH|GridData.VERTICAL_ALIGN_BEGINNING);
gd.grabExcessVerticalSpace = true;
gd.grabExcessHorizontalSpace = true;
client.setLayoutData(gd);
toolkit.paintBordersFor(client);
section.setClient(client);
/*********************************************************************/
// Create Tree for Type System
tree = toolkit.createTree(client, SWT.FULL_SELECTION);
// final TableTree tree = new TableTree (client, SWT.NULL);
gd = new GridData(GridData.FILL_BOTH|GridData.VERTICAL_ALIGN_BEGINNING);
gd.grabExcessVerticalSpace = true;
gd.grabExcessHorizontalSpace = true;
gd.heightHint = 160;
tree.setLayoutData(gd);
// tree.setVisible(false);
tree.addSelectionListener(this);
// tree.addListener (SWT.Selection, new Listener () {
// public void handleEvent (Event event) {
// String string = event.detail == SWT.CHECK ? "Checked" : "Selected";
// System.out.println (tree.getSelection()[0] + " " + string);
// if ( ! ((TreeItem)event.item).getGrayed() ) {
// ((TreeItem)event.item).setGrayed(true);
// }
// event.doit = false;
// ((TreeItem)event.item).setChecked(false);
// }
// });
/*
* NOTE: MeasureItem, PaintItem and EraseItem are called repeatedly.
* Therefore, it is critical for performance that these methods be
* as efficient as possible.
*/
/*
tree.addListener(SWT.EraseItem, new Listener() {
public void handleEvent(Event event) {
if ((event.detail & SWT.SELECTED) != 0) {
GC gc = event.gc;
Rectangle area = tree.getClientArea();
* If you wish to paint the selection beyond the end of
* last column, you must change the clipping region.
int columnCount = tree.getColumnCount();
if (event.index == columnCount - 1 || columnCount == 0) {
int width = area.x + area.width - event.x;
if (width > 0) {
Region region = new Region();
gc.getClipping(region);
region.add(event.x, event.y, width, event.height);
gc.setClipping(region);
region.dispose();
}
}
gc.setAdvanced(true);
if (gc.getAdvanced()) gc.setAlpha(127);
Rectangle rect = event.getBounds();
Color foreground = gc.getForeground();
Color background = gc.getBackground();
gc.setForeground(tree.getDisplay().getSystemColor(SWT.COLOR_RED));
// gc.setBackground(tree.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
gc.drawRectangle(rect);
// gc.fillGradientRectangle(0, rect.y, 500, rect.height, false);
// restore colors for subsequent drawing
gc.setForeground(foreground);
// gc.setBackground(background);
event.detail &= ~SWT.SELECTED;
}
}
});
*/
tree.addListener (SWT.MouseUp, new Listener () {
public void handleEvent (Event event) {
Point point = new Point (event.x, event.y);
// System.out.println("Click at x=" + event.x + " y=" + event.y);
currentSelectedTreeItem = tree.getItem (point);
if (currentSelectedTreeItem != null) {
// Find what column is clicked
TreeColumn[] columns = tree.getColumns();
int x = 0;
int w = 0;
int i = 0;
currentSelectedColumn = 0;
for (i=0; i<columns.length; ++i) {
w = columns[i].getWidth();
if (x < event.x && event.x < (x+w)) {
// System.out.println("Found column:" + i);
currentSelectedColumn = i;
break;
}
x += w;
}
// System.out.println ("Mouse up at column " + i + " of " + currentSelectedTreeItem.getText());
}
}
});
/*
table.addListener (SWT.MouseDown, new Listener () {
public void handleEvent (Event event) {
Rectangle clientArea = table.getClientArea ();
Point pt = new Point (event.x, event.y);
int index = table.getTopIndex ();
while (index < table.getItemCount ()) {
boolean visible = false;
TableItem item = table.getItem (index);
for (int i=0; i < columnCount; i++) {
Rectangle rect = item.getBounds (i);
if (rect.contains (pt)) {
System.out.println ("Item " + index + "-" + i);
}
if (!visible && rect.intersects (clientArea)) {
visible = true;
}
}
if (!visible) return;
index++;
}
}
});
*/
// Create Viewer for Tree
treeViewer = new TreeViewer(tree);
treeViewer.setUseHashlookup(true);
treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
// Trace.trace();
if (_fireTreeSelection) {
setSelectedTreeNode (event);
managedForm.fireSelectionChanged(_instance, event.getSelection());
}
}
});
// For Table Tree Viewer
tree.setLinesVisible(true);
tree.setHeaderVisible(true);
String headers[] = { "RGB Values", "", "FG", "", "BG", "Selected", "Hidden" };
final TreeColumn columns[] = new TreeColumn[headers.length];
for (int i = 0; i < headers.length; i++) {
TreeColumn tc = new TreeColumn(tree, SWT.NONE, i);
tc.setResizable(true);
tc.setText(headers[i]);
if (i==0) {
tc.setWidth(250);
} else if (i==1 || i==3) {
tc.setWidth(4);
} else if (i==2 || i==4) {
tc.setWidth(40);
} else {
tc.setWidth(60);
}
columns[i] = tc;
}
// tree.pack(true);
contentProvider = new ColoredTypeTreeContentProvider(false);
treeViewer.setContentProvider(contentProvider);
treeViewer.setLabelProvider(new DefaultColorTreeLabelProvider(treeViewer, false));
// _typeTreeViewer.addFilter(_typeTreeViewerFiler = new TypeSystemViewerFilter());
treeViewer.setSorter(new ViewerSorter());
// TypeSystemToolTips treeListener = new TypeSystemToolTips (tree);
// tree.addListener (SWT.Dispose, treeListener);
// tree.addListener (SWT.KeyDown, treeListener);
// tree.addListener (SWT.MouseMove, treeListener);
// tree.addListener (SWT.MouseHover, treeListener);
// createSectionToolbar (toolkit, section, sectionToolbarComposite, treeViewer);
/*********************************************************************/
// DnDTreeViewer dnd = new DnDTreeViewer (this);
// dnd.initDragAndDrop (_typeTreeViewer);
/*********************************************************************/
/* Set Selection Provider */
/*********************************************************************/
/* if (__workbenchPartSite != null) {
__workbenchPartSite.setSelectionProvider(_typeTreeViewer);
}
*/
createContextMenu(treeViewer.getControl());
section.setExpanded(true);
if (inputObject != null) {
setInput (inputObject, "???");
}
// Trace.trace();
return section;
} // createContents