/******************************************************************************* * Copyright 2015 xWic group (http://www.xwic.de) * * Licensed under the Apache License, Version 2.0 (the "License"). * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * *******************************************************************************/ package de.jwic.demo.tbv; import java.io.File; import de.jwic.base.ControlContainer; import de.jwic.base.IControlContainer; import de.jwic.base.JWicRuntime; import de.jwic.controls.Button; import de.jwic.controls.ListBoxControl; import de.jwic.controls.tableviewer.TableColumn; import de.jwic.controls.tableviewer.TableModel; import de.jwic.controls.tableviewer.TableModelAdapter; import de.jwic.controls.tableviewer.TableModelEvent; import de.jwic.controls.tableviewer.TableViewer; import de.jwic.events.ElementSelectedEvent; import de.jwic.events.ElementSelectedListener; import de.jwic.events.SelectionListener; /** * This TreeViewer sample demonstrates how to create an explorer like * tree. * * @author Florian Lippisch */ public class FileTreeDemo extends ControlContainer { private static final long serialVersionUID = 2L; private ListBoxControl lbcEvents = null; private Button btFillWidth; private Button btEnabled; private TableViewer viewer; private FileNodeContentProvider contentProvider; private class DemoTableViewerListener extends TableModelAdapter implements ElementSelectedListener { public void rangeUpdated(TableModelEvent event) { lbcEvents.addElement("rangeUpdated()"); } public void elementSelected(ElementSelectedEvent event) { lbcEvents.addElement("elementSelected(" + event.getElement() + ") " + (event.isDblClick() ? "DBLCLICK" : "")); } public void columnSelected(TableModelEvent event) { lbcEvents.addElement("columnSelected(" + event.getTableColumn().getTitle() + ")"); } /* (non-Javadoc) * @see de.jwic.ecolib.treeviewer.ITreeModelListener#nodeCollapsed(de.jwic.ecolib.treeviewer.TreeModelEvent) */ public void nodeCollapsed(TableModelEvent event) { lbcEvents.addElement("nodeCollapsed(" + event.getRowKey() + ")"); } /* (non-Javadoc) * @see de.jwic.ecolib.treeviewer.ITreeModelListener#nodeExpanded(de.jwic.ecolib.treeviewer.TreeModelEvent) */ public void nodeExpanded(TableModelEvent event) { lbcEvents.addElement("nodeExpanded(" + event.getRowKey() + ")"); } public void columnResized(TableModelEvent event) { lbcEvents.addElement("columnResized(" + event.getTableColumn().getTitle() + ")"); } } /** * Constructor. * @param container */ public FileTreeDemo(IControlContainer container) { super(container); lbcEvents = new ListBoxControl(this, "events"); lbcEvents.setSize(10); lbcEvents.setWidth(500); viewer = new TableViewer(this, "tree"); FileTreeNode rootNode = new FileTreeNode(new File(JWicRuntime.getJWicRuntime().getRootPath())); contentProvider = new FileNodeContentProvider(rootNode); viewer.setContentProvider(contentProvider); viewer.setTableLabelProvider(new FileLabelProvider()); viewer.setScrollable(true); viewer.setResizeableColumns(false); viewer.setSelectableColumns(false); viewer.setWidth(250); viewer.setHeight(300); viewer.setShowHeader(false); viewer.setCssClass("treeSimple"); viewer.setShowStatusBar(false); viewer.setExpandableColumn(0); TableModel model = viewer.getModel(); DemoTableViewerListener listener = new DemoTableViewerListener(); model.addTableModelListener(listener); model.addElementSelectedListener(listener); model.setSelectionMode(TableModel.SELECTION_SINGLE); createColumns(); /* * Add controls to modify TableViewer properties. */ ListBoxControl lbClass = new ListBoxControl(this, "lbClass"); lbClass.addElement("tblViewer (default)", "tblViewer"); lbClass.addElement("tblVFlat"); lbClass.addElement("treeSimple"); lbClass.setSelectedKey("treeSimple"); lbClass.setChangeNotification(true); lbClass.addElementSelectedListener(new ElementSelectedListener() { public void elementSelected(ElementSelectedEvent event) { viewer.setCssClass((String)event.getElement()); }; }); // Change ResizeableColumn property ListBoxControl lbResCol = new ListBoxControl(this, "lbResCol"); lbResCol.addElement("True", "true"); lbResCol.addElement("False", "false"); lbResCol.setSelectedKey(viewer.isResizeableColumns() ? "true" : "false"); lbResCol.setChangeNotification(true); lbResCol.addElementSelectedListener(new ElementSelectedListener() { public void elementSelected(ElementSelectedEvent event) { viewer.setResizeableColumns(event.getElement().equals("true")); }; }); // Change ResizeableColumn property ListBoxControl lbSelCol = new ListBoxControl(this, "lbSelCol"); lbSelCol.addElement("True", "true"); lbSelCol.addElement("False", "false"); lbSelCol.setSelectedKey(viewer.isSelectableColumns() ? "true" : "false"); lbSelCol.setChangeNotification(true); lbSelCol.addElementSelectedListener(new ElementSelectedListener() { public void elementSelected(ElementSelectedEvent event) { viewer.setSelectableColumns(event.getElement().equals("true")); }; }); // Change ResizeableColumn property ListBoxControl lbScrollable = new ListBoxControl(this, "lbScrollable"); lbScrollable.addElement("True", "true"); lbScrollable.addElement("False", "false"); lbScrollable.setSelectedKey(viewer.isScrollable() ? "true" : "false"); lbScrollable.setChangeNotification(true); lbScrollable.addElementSelectedListener(new ElementSelectedListener() { public void elementSelected(ElementSelectedEvent event) { viewer.setScrollable(event.getElement().equals("true")); }; }); // Change Listbox Width ListBoxControl lbWidth = new ListBoxControl(this, "lbWidth"); lbWidth.addElement("0 - Unspecified", "0"); for (int i = 200; i < 601; i += 50) { lbWidth.addElement(Integer.toString(i) + "px", Integer.toString(i)); } lbWidth.setSelectedKey(Integer.toString(viewer.getWidth())); lbWidth.setChangeNotification(true); lbWidth.addElementSelectedListener(new ElementSelectedListener() { public void elementSelected(ElementSelectedEvent event) { viewer.setWidth(Integer.parseInt((String)event.getElement())); }; }); // Change Listbox Height ListBoxControl lbHeight = new ListBoxControl(this, "lbHeight"); lbHeight.addElement("0 - Unspecified", "0"); for (int i = 50; i < 401; i += 50) { lbHeight.addElement(Integer.toString(i) + "px", Integer.toString(i)); } lbHeight.setSelectedKey(Integer.toString(viewer.getHeight())); lbHeight.setChangeNotification(true); lbHeight.addElementSelectedListener(new ElementSelectedListener() { public void elementSelected(ElementSelectedEvent event) { viewer.setHeight(Integer.parseInt((String)event.getElement())); }; }); // Change Listbox Width ListBoxControl lbVisible = new ListBoxControl(this, "btVisible"); lbVisible.addElement("True", "true"); lbVisible.addElement("False", "false"); lbVisible.setSelectedKey(viewer.isVisible() ? "true" : "false"); lbVisible.setChangeNotification(true); lbVisible.addElementSelectedListener(new ElementSelectedListener() { public void elementSelected(ElementSelectedEvent event) { viewer.setVisible(event.getElement().equals("true")); }; }); // Change Listbox Width ListBoxControl lbSelMode = new ListBoxControl(this, "lbSelMode"); lbSelMode.addElement("SELECTION_NONE", "0"); lbSelMode.addElement("SELECTION_SINGLE", "1"); lbSelMode.addElement("SELECTION_MULTI", "2"); lbSelMode.setSelectedKey(Integer.toString(viewer.getModel().getSelectionMode())); lbSelMode.setChangeNotification(true); lbSelMode.addElementSelectedListener(new ElementSelectedListener() { public void elementSelected(ElementSelectedEvent event) { viewer.getModel().setSelectionMode(Integer.parseInt((String)event.getElement())); viewer.setRequireRedraw(true); }; }); btEnabled = new Button(this, "btEnabled"); btEnabled.setTitle(viewer.isEnabled() ? "Disable" : "Enable"); btEnabled.addSelectionListener(new SelectionListener() { public void objectSelected(de.jwic.events.SelectionEvent event) { changeEnabled(); }; }); btFillWidth = new Button(this, "btFillWidth"); btFillWidth.setTitle(viewer.isFillWidth() ? "Disable" : "Enable"); btFillWidth.addSelectionListener(new SelectionListener() { public void objectSelected(de.jwic.events.SelectionEvent event) { changeFillWidth(); }; }); } /** * */ private void createColumns() { // creats an empty column TableModel model = viewer.getModel(); model.addColumn(new TableColumn("Directory", viewer.getWidth() - 4)); } /** * Change between multiple and single selection. */ protected void changeFillWidth() { viewer.setFillWidth(!viewer.isFillWidth()); btFillWidth.setTitle(viewer.isFillWidth() ? "Disable" : "Enable"); } /** * Change the Enabled property of the button. */ protected void changeEnabled() { viewer.setEnabled(!viewer.isEnabled()); btEnabled.setTitle(viewer.isEnabled() ? "Disable" : "Enable"); } }