summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVeronika Irvine <veronika>2006-04-12 14:28:27 +0000
committerVeronika Irvine <veronika>2006-04-12 14:28:27 +0000
commit599eb2b0f46840fdbb20c23e8e446e36f12bc0bb (patch)
treeb2f9dae4b648848ce4a7935bc49470f79b7328d8
parentf94123ee4e132f6e7e84978d91811f502d0830cb (diff)
downloadeclipse.platform.swt-599eb2b0f46840fdbb20c23e8e446e36f12bc0bb.tar.gz
eclipse.platform.swt-599eb2b0f46840fdbb20c23e8e446e36f12bc0bb.tar.xz
eclipse.platform.swt-599eb2b0f46840fdbb20c23e8e446e36f12bc0bb.zip
Fixed first column with horizontal scrollbar for remaining columns
-rw-r--r--examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet234.java121
1 files changed, 121 insertions, 0 deletions
diff --git a/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet234.java b/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet234.java
new file mode 100644
index 0000000000..a97db95bda
--- /dev/null
+++ b/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet234.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * 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
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.snippets;
+/*
+ * Table example snippet: Fixed first column and horizontal scroll remaining columns
+ *
+ * For a list of all SWT example snippets see
+ * http://www.eclipse.org/swt/snippets/
+ *
+ */
+
+import org.eclipse.swt.*;
+import org.eclipse.swt.graphics.*;
+import org.eclipse.swt.layout.*;
+import org.eclipse.swt.widgets.*;
+
+public class Snippet234 {
+public static void main (String [] args) {
+ int rowCount = 40;
+ int columnCount = 15;
+ final Display display = new Display ();
+ Shell shell = new Shell (display);
+ shell.setLayout(new FillLayout());
+
+ Composite parent = new Composite(shell, SWT.BORDER);
+ GridLayout layout = new GridLayout(2, false);
+ layout.marginWidth = layout.marginHeight = layout.horizontalSpacing = 0;
+ parent.setLayout(layout);
+ final Table leftTable = new Table(parent, SWT.MULTI | SWT.FULL_SELECTION);
+ leftTable.setLayoutData(new GridData(SWT.LEFT, SWT.FILL, false, true));
+ leftTable.setHeaderVisible(true);
+ final Table rightTable = new Table(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
+ rightTable.setHeaderVisible(true);
+ GridData table2Data = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 2);
+ rightTable.setLayoutData(table2Data);
+ // Create columns
+ TableColumn column1 = new TableColumn(leftTable, SWT.NONE);
+ column1.setText("Name");
+ column1.setWidth(150);
+ for (int i = 0; i < columnCount; i++) {
+ TableColumn column = new TableColumn(rightTable, SWT.NONE);
+ column.setText("Value "+i);
+ column.setWidth(200);
+ }
+ // Create rows
+ for (int i = 0; i < rowCount; i++) {
+ TableItem item = new TableItem(leftTable, SWT.NONE);
+ item.setText("item "+i);
+ item = new TableItem(rightTable, SWT.NONE);
+ for (int j = 0; j < columnCount; j++) {
+ item.setText(j, "Item "+i+" value @ "+j);
+ }
+ }
+ // Make selection the same in both tables
+ leftTable.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ rightTable.setSelection(leftTable.getSelectionIndices());
+ }
+ });
+ rightTable.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ leftTable.setSelection(rightTable.getSelectionIndices());
+ }
+ });
+ // On Windows, the selection is gray if the table does not have focus.
+ // To make both tables appear in focus, draw teh selection background here.
+ // This part only works on version 3.2 or later.
+ Listener eraseListener = new Listener() {
+ public void handleEvent(Event event) {
+ if((event.detail & SWT.SELECTED) != 0) {
+ GC gc = event.gc;
+ Rectangle rect = event.getBounds();
+ gc.setForeground(display.getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT));
+ gc.setBackground(display.getSystemColor(SWT.COLOR_LIST_SELECTION));
+ gc.fillRectangle(rect);
+ event.detail &= ~SWT.SELECTED;
+ }
+ }
+ };
+
+ leftTable.addListener(SWT.EraseItem, eraseListener);
+ rightTable.addListener(SWT.EraseItem, eraseListener);
+ // Make vertical scrollbars scroll together
+ ScrollBar vBarLeft = leftTable.getVerticalBar();
+ vBarLeft.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ rightTable.setTopIndex(leftTable.getTopIndex());
+ }
+ });
+ ScrollBar vBarRight = rightTable.getVerticalBar();
+ vBarRight.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ leftTable.setTopIndex(rightTable.getTopIndex());
+ }
+ });
+ // Horizontal bar on second table takes up a little extra space.
+ // To keep vertical scroll bars in sink, force table1 to end above
+ // horizontal scrollbar
+ ScrollBar hBarRight = rightTable.getHorizontalBar();
+ Label spacer = new Label(parent, SWT.NONE);
+ GridData spacerData = new GridData();
+ spacerData.heightHint = hBarRight.getSize().y;
+ spacer.setVisible(false);
+ parent.setBackground(leftTable.getBackground());
+
+ shell.setSize(600, 400);
+ shell.open ();
+ while (!shell.isDisposed ()) {
+ if (!display.readAndDispatch ()) display.sleep ();
+ }
+ display.dispose ();
+}
+}