Limit selection to items that match a pattern : Tree Event « SWT « Java Tutorial






/*******************************************************************************
 * Copyright (c) 2000, 2004 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;
/*
 * Tree example snippet: limit selection to items that match a pattern
 * 
 * For a list of all SWT example snippets see
 * http://www.eclipse.org/swt/snippets/
 */
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;

public class TreeSelectionPattern {

  public static void main(String[] args) {
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    final Tree tree = new Tree(shell, SWT.BORDER | SWT.MULTI);
    for (int i = 0; i < 2; i++) {
      TreeItem item = new TreeItem(tree, SWT.NONE);
      item.setText("item " + i);
      for (int j = 0; j < 2; j++) {
        TreeItem subItem = new TreeItem(item, SWT.NONE);
        subItem.setText("item " + j);
        for (int k = 0; k < 2; k++) {
          TreeItem subsubItem = new TreeItem(subItem, SWT.NONE);
          subsubItem.setText("item " + k);
        }
      }
    }

    tree.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent e) {
        TreeItem[] selection = tree.getSelection();
        TreeItem[] revisedSelection = new TreeItem[0];
        for (int i = 0; i < selection.length; i++) {
          String text = selection[i].getText();
          if (text.indexOf("1") > 0) {
            TreeItem[] newSelection = new TreeItem[revisedSelection.length + 1];
            System.arraycopy(revisedSelection, 0, newSelection, 0, revisedSelection.length);
            newSelection[revisedSelection.length] = selection[i];
            revisedSelection = newSelection;
          }
        }
        tree.setSelection(revisedSelection);
      }
    });

    shell.setSize(300, 300);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}








17.60.Tree Event
17.60.1.Tree event: Measure TreeItem, Paint TreeItem and Erase TreeItemTree event: Measure TreeItem, Paint TreeItem and Erase TreeItem
17.60.2.Get TreeItem from Mouse position in mouse down eventGet TreeItem from Mouse position in mouse down event
17.60.3.Limit selection to items that match a pattern
17.60.4.Tree node Collapse listenerTree node Collapse listener
17.60.5.Tree Exapand listenerTree Exapand listener
17.60.6.Tree node selection listenerTree node selection listener
17.60.7.Tree default selection listenerTree default selection listener
17.60.8.Tree node selection eventTree node selection event