You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by tv...@apache.org on 2009/11/02 15:59:54 UTC
svn commit: r831909 - in /incubator/pivot/trunk:
demos/src/org/apache/pivot/demos/explorer/
tools/src/org/apache/pivot/tools/wtk/
Author: tvolkert
Date: Mon Nov 2 14:59:53 2009
New Revision: 831909
URL: http://svn.apache.org/viewvc?rev=831909&view=rev
Log:
Updates to component explorer, event logger
Modified:
incubator/pivot/trunk/demos/src/org/apache/pivot/demos/explorer/ComponentExplorer.java
incubator/pivot/trunk/demos/src/org/apache/pivot/demos/explorer/component_explorer.wtkx
incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLogger.java
incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLoggerSkin.java
incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/event_logger_skin.wtkx
Modified: incubator/pivot/trunk/demos/src/org/apache/pivot/demos/explorer/ComponentExplorer.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/demos/src/org/apache/pivot/demos/explorer/ComponentExplorer.java?rev=831909&r1=831908&r2=831909&view=diff
==============================================================================
--- incubator/pivot/trunk/demos/src/org/apache/pivot/demos/explorer/ComponentExplorer.java (original)
+++ incubator/pivot/trunk/demos/src/org/apache/pivot/demos/explorer/ComponentExplorer.java Mon Nov 2 14:59:53 2009
@@ -17,10 +17,10 @@
package org.apache.pivot.demos.explorer;
import java.io.IOException;
+import java.net.URL;
import org.apache.pivot.collections.List;
import org.apache.pivot.collections.Map;
-import org.apache.pivot.collections.Sequence;
import org.apache.pivot.collections.Sequence.Tree;
import org.apache.pivot.collections.Sequence.Tree.Path;
import org.apache.pivot.serialization.SerializationException;
@@ -31,30 +31,49 @@
import org.apache.pivot.wtk.Application;
import org.apache.pivot.wtk.ApplicationContext;
import org.apache.pivot.wtk.Border;
+import org.apache.pivot.wtk.Button;
+import org.apache.pivot.wtk.ButtonGroup;
+import org.apache.pivot.wtk.ButtonGroupListener;
import org.apache.pivot.wtk.Component;
import org.apache.pivot.wtk.ComponentMouseButtonListener;
import org.apache.pivot.wtk.DesktopApplicationContext;
import org.apache.pivot.wtk.Display;
import org.apache.pivot.wtk.Mouse;
import org.apache.pivot.wtk.ScrollPane;
+import org.apache.pivot.wtk.ScrollPane.ScrollBarPolicy;
import org.apache.pivot.wtk.TabPane;
+import org.apache.pivot.wtk.TabPaneSelectionListener;
import org.apache.pivot.wtk.TreeView;
-import org.apache.pivot.wtk.TreeViewSelectionListener;
import org.apache.pivot.wtk.Window;
import org.apache.pivot.wtkx.WTKXSerializer;
public class ComponentExplorer implements Application {
private Window window = null;
private TreeView treeView = null;
- private ScrollPane scrollPane = null;
- private Border contentPane = null;
- private TabPane inspectorTabPane = null;
+ private TabPane contentTabPane = null;
private ComponentPropertyInspector componentPropertyInspector = null;
private ComponentStyleInspector componentStyleInspector = null;
private EventLogger eventLogger = null;
+ private ButtonGroup horizontalScrollBarPolicyGroup = null;
+ private ButtonGroup verticalScrollBarPolicyGroup = null;
+ private Button horizontalAutoButton = null;
+ private Button horizontalFillButton = null;
+ private Button horizontalFillToCapacityButton = null;
+ private Button horizontalNeverButton = null;
+ private Button verticalAutoButton = null;
+ private Button verticalFillButton = null;
+ private Button verticalFillToCapacityButton = null;
+ private Button verticalNeverButton = null;
+
public static final String CLASS_PROPERTY = "class";
+ private static final String SRC_KEY = "src";
+ private static final String HORIZONTAL_SCROLL_BAR_POLICY_KEY = "horizontalScrollBarPolicy";
+ private static final String VERTICAL_SCROLL_BAR_POLICY_KEY = "verticalScrollBarPolicy";
+ private static final String COMPONENT_KEY = "component";
+ private static final String SCROLL_PANE_KEY = "scrollPane";
+
@Override
public void startup(Display display, Map<String, String> properties)
throws Exception {
@@ -63,48 +82,21 @@
window = (Window)wtkxSerializer.readObject(this, "component_explorer.wtkx");
treeView = wtkxSerializer.getValue("treeView");
- scrollPane = wtkxSerializer.getValue("scrollPane");
- contentPane = wtkxSerializer.getValue("contentPane");
- inspectorTabPane = wtkxSerializer.getValue("inspectorTabPane");
+ contentTabPane = wtkxSerializer.getValue("contentTabPane");
componentPropertyInspector = wtkxSerializer.getValue("componentPropertyInspector");
componentStyleInspector = wtkxSerializer.getValue("componentStyleInspector");
eventLogger = wtkxSerializer.getValue("eventLogger");
- treeView.getTreeViewSelectionListeners().add(new TreeViewSelectionListener.Adapter() {
- @Override
- public void selectedPathsChanged(TreeView treeView,
- Sequence<Path> previousSelectedPaths) {
- Component component = null;
-
- Object node = treeView.getSelectedNode();
- if (node instanceof ComponentNode) {
- ComponentNode componentNode = (ComponentNode)node;
-
- inspectorTabPane.setVisible(true);
-
- WTKXSerializer wtkxSerializer = new WTKXSerializer();
- try {
- component = (Component)wtkxSerializer.readObject(componentNode.getSrc());
- } catch (IOException exception) {
- throw new RuntimeException(exception);
- } catch (SerializationException exception) {
- throw new RuntimeException(exception);
- }
-
- scrollPane.setHorizontalScrollBarPolicy
- (componentNode.getHorizontalScrollBarPolicy());
- scrollPane.setVerticalScrollBarPolicy
- (componentNode.getVerticalScrollBarPolicy());
- } else {
- inspectorTabPane.setVisible(false);
- }
-
- contentPane.setContent(component);
- componentPropertyInspector.setSource(component);
- componentStyleInspector.setSource(component);
- eventLogger.setSource(component);
- }
- });
+ horizontalScrollBarPolicyGroup = wtkxSerializer.getValue("horizontalScrollBarPolicyGroup");
+ verticalScrollBarPolicyGroup = wtkxSerializer.getValue("verticalScrollBarPolicyGroup");
+ horizontalAutoButton = wtkxSerializer.getValue("horizontalAutoButton");
+ horizontalFillButton = wtkxSerializer.getValue("horizontalFillButton");
+ horizontalFillToCapacityButton = wtkxSerializer.getValue("horizontalFillToCapacityButton");
+ horizontalNeverButton = wtkxSerializer.getValue("horizontalNeverButton");
+ verticalAutoButton = wtkxSerializer.getValue("verticalAutoButton");
+ verticalFillButton = wtkxSerializer.getValue("verticalFillButton");
+ verticalFillToCapacityButton = wtkxSerializer.getValue("verticalFillToCapacityButton");
+ verticalNeverButton = wtkxSerializer.getValue("verticalNeverButton");
treeView.getComponentMouseButtonListeners().add(new ComponentMouseButtonListener.Adapter() {
@Override
@@ -115,9 +107,11 @@
if (path != null) {
List<?> treeData = treeView.getTreeData();
- Object treeNode = Tree.get(treeData, path);
+ Object node = Tree.get(treeData, path);
- if (treeNode instanceof List<?>) {
+ if (node instanceof ComponentNode) {
+ open((ComponentNode)node);
+ } else if (node instanceof List<?>) {
treeView.setBranchExpanded(path, !treeView.isBranchExpanded(path));
}
}
@@ -127,6 +121,120 @@
}
});
+ contentTabPane.getTabPaneSelectionListeners().add(new TabPaneSelectionListener.Adapter() {
+ @Override
+ public void selectedIndexChanged(TabPane tabPane, int previousSelectedIndex) {
+ Component selectedTab = tabPane.getSelectedTab();
+
+ if (selectedTab != null) {
+ Component component = (Component)selectedTab.getUserData().get(COMPONENT_KEY);
+ componentPropertyInspector.setSource(component);
+ componentStyleInspector.setSource(component);
+ eventLogger.setSource(component);
+
+ ScrollBarPolicy horizontalScrollBarPolicy = (ScrollBarPolicy)
+ selectedTab.getUserData().get(HORIZONTAL_SCROLL_BAR_POLICY_KEY);
+ switch (horizontalScrollBarPolicy) {
+ case AUTO:
+ horizontalScrollBarPolicyGroup.setSelection(horizontalAutoButton);
+ break;
+ case FILL:
+ horizontalScrollBarPolicyGroup.setSelection(horizontalFillButton);
+ break;
+ case FILL_TO_CAPACITY:
+ horizontalScrollBarPolicyGroup.setSelection(horizontalFillToCapacityButton);
+ break;
+ case NEVER:
+ horizontalScrollBarPolicyGroup.setSelection(horizontalNeverButton);
+ break;
+ }
+
+ ScrollBarPolicy verticalScrollBarPolicy = (ScrollBarPolicy)
+ selectedTab.getUserData().get(VERTICAL_SCROLL_BAR_POLICY_KEY);
+ switch (verticalScrollBarPolicy) {
+ case AUTO:
+ verticalScrollBarPolicyGroup.setSelection(verticalAutoButton);
+ break;
+ case FILL:
+ verticalScrollBarPolicyGroup.setSelection(verticalFillButton);
+ break;
+ case FILL_TO_CAPACITY:
+ verticalScrollBarPolicyGroup.setSelection(verticalFillToCapacityButton);
+ break;
+ case NEVER:
+ verticalScrollBarPolicyGroup.setSelection(verticalNeverButton);
+ break;
+ }
+ }
+ }
+ });
+
+ horizontalScrollBarPolicyGroup.getButtonGroupListeners().add
+ (new ButtonGroupListener.Adapter() {
+ @Override
+ public void selectionChanged(ButtonGroup buttonGroup, Button previousSelection) {
+ Component selectedTab = contentTabPane.getSelectedTab();
+
+ if (selectedTab != null) {
+ Button button = buttonGroup.getSelection();
+
+ ScrollBarPolicy horizontalScrollBarPolicy = null;
+
+ if (button == horizontalAutoButton) {
+ horizontalScrollBarPolicy = ScrollBarPolicy.AUTO;
+ } else if (button == horizontalFillButton) {
+ horizontalScrollBarPolicy = ScrollBarPolicy.FILL;
+ } else if (button == horizontalFillToCapacityButton) {
+ horizontalScrollBarPolicy = ScrollBarPolicy.FILL_TO_CAPACITY;
+ } else if (button == horizontalNeverButton) {
+ horizontalScrollBarPolicy = ScrollBarPolicy.NEVER;
+ }
+
+ if (horizontalScrollBarPolicy != null) {
+ selectedTab.getUserData().put(HORIZONTAL_SCROLL_BAR_POLICY_KEY,
+ horizontalScrollBarPolicy);
+
+ ScrollPane scrollPane = (ScrollPane)selectedTab.getUserData().get
+ (SCROLL_PANE_KEY);
+ scrollPane.setHorizontalScrollBarPolicy(horizontalScrollBarPolicy);
+ }
+ }
+ }
+ });
+
+ verticalScrollBarPolicyGroup.getButtonGroupListeners().add
+ (new ButtonGroupListener.Adapter() {
+ @Override
+ public void selectionChanged(ButtonGroup buttonGroup, Button previousSelection) {
+ Component selectedTab = contentTabPane.getSelectedTab();
+
+ if (selectedTab != null) {
+ Button button = buttonGroup.getSelection();
+
+ ScrollBarPolicy verticalScrollBarPolicy = null;
+
+ if (button == verticalAutoButton) {
+ verticalScrollBarPolicy = ScrollBarPolicy.AUTO;
+ } else if (button == verticalFillButton) {
+ verticalScrollBarPolicy = ScrollBarPolicy.FILL;
+ } else if (button == verticalFillToCapacityButton) {
+ verticalScrollBarPolicy = ScrollBarPolicy.FILL_TO_CAPACITY;
+ } else if (button == verticalNeverButton) {
+ verticalScrollBarPolicy = ScrollBarPolicy.NEVER;
+ }
+
+ if (verticalScrollBarPolicy != null) {
+ selectedTab.getUserData().put(VERTICAL_SCROLL_BAR_POLICY_KEY,
+ verticalScrollBarPolicy);
+
+ ScrollPane scrollPane = (ScrollPane)selectedTab.getUserData().get
+ (SCROLL_PANE_KEY);
+ scrollPane.setVerticalScrollBarPolicy(verticalScrollBarPolicy);
+ }
+ }
+ }
+ });
+
Path initialSelectedPath = null;
String classProperty = properties.get(CLASS_PROPERTY);
@@ -138,17 +246,24 @@
ComponentNode componentNode = (ComponentNode)node;
if (classProperty != null) {
+ // class property was set; open the corresponding
+ // component node
if (componentNode.getText().equals(classProperty)) {
+ open(componentNode);
initialSelectedPath = itemIterator.getPath();
break;
}
} else {
+ // class property was *not* set; open the first component
+ // node we find
+ open(componentNode);
initialSelectedPath = itemIterator.getPath();
break;
}
}
}
+ // If we've selected a path, ensure that it's visible to the user
if (initialSelectedPath != null) {
treeView.setSelectedPath(initialSelectedPath);
@@ -169,6 +284,60 @@
treeView.requestFocus();
}
+ private void open(ComponentNode componentNode) {
+ URL src = componentNode.getSrc();
+ String srcPath = src.getPath();
+ ScrollBarPolicy horizontalScrollBarPolicy = componentNode.getHorizontalScrollBarPolicy();
+ ScrollBarPolicy verticalScrollBarPolicy = componentNode.getVerticalScrollBarPolicy();
+
+ int tabIndex = -1;
+ TabPane.TabSequence tabs = contentTabPane.getTabs();
+ for (int i = 0, n = tabs.getLength(); i < n; i++) {
+ Component tab = tabs.get(i);
+
+ if (srcPath.equals((String)tab.getUserData().get(SRC_KEY))) {
+ tabIndex = i;
+ break;
+ }
+ }
+
+ if (tabIndex == -1) {
+ Component component = null;
+
+ WTKXSerializer wtkxSerializer = new WTKXSerializer();
+ try {
+ component = (Component)wtkxSerializer.readObject(src);
+ } catch (IOException exception) {
+ throw new RuntimeException(exception);
+ } catch (SerializationException exception) {
+ throw new RuntimeException(exception);
+ }
+
+ Border contentPane = new Border();
+ contentPane.getStyles().put("thickness", 0);
+ contentPane.getStyles().put("padding", 6);
+ contentPane.setContent(component);
+
+ ScrollPane scrollPane = new ScrollPane();
+ scrollPane.setHorizontalScrollBarPolicy(horizontalScrollBarPolicy);
+ scrollPane.setVerticalScrollBarPolicy(verticalScrollBarPolicy);
+ scrollPane.setView(contentPane);
+
+ Border border = new Border();
+ border.getUserData().put(SRC_KEY, srcPath);
+ border.getUserData().put(HORIZONTAL_SCROLL_BAR_POLICY_KEY, horizontalScrollBarPolicy);
+ border.getUserData().put(VERTICAL_SCROLL_BAR_POLICY_KEY, verticalScrollBarPolicy);
+ border.getUserData().put(COMPONENT_KEY, component);
+ border.getUserData().put(SCROLL_PANE_KEY, scrollPane);
+ border.setContent(scrollPane);
+
+ tabIndex = contentTabPane.getTabs().add(border);
+ TabPane.setLabel(border, srcPath.substring(srcPath.lastIndexOf('/') + 1));
+ }
+
+ contentTabPane.setSelectedIndex(tabIndex);
+ }
+
@Override
public boolean shutdown(boolean optional) throws Exception {
if (window != null) {
Modified: incubator/pivot/trunk/demos/src/org/apache/pivot/demos/explorer/component_explorer.wtkx
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/demos/src/org/apache/pivot/demos/explorer/component_explorer.wtkx?rev=831909&r1=831908&r2=831909&view=diff
==============================================================================
--- incubator/pivot/trunk/demos/src/org/apache/pivot/demos/explorer/component_explorer.wtkx (original)
+++ incubator/pivot/trunk/demos/src/org/apache/pivot/demos/explorer/component_explorer.wtkx Mon Nov 2 14:59:53 2009
@@ -23,262 +23,371 @@
xmlns:explorer="org.apache.pivot.demos.explorer"
xmlns="org.apache.pivot.wtk">
<content>
- <SplitPane orientation="horizontal" splitRatio="0.25">
- <left>
- <Border>
- <content>
- <ScrollPane horizontalScrollBarPolicy="fill_to_capacity">
- <view>
- <TreeView wtkx:id="treeView">
- <nodeRenderer>
- <content:TreeViewNodeRenderer styles="{padding:1}"/>
- </nodeRenderer>
- <treeData>
- <content:TreeBranch>
- <content:TreeBranch text="Buttons"
- icon="@folder.png">
- <explorer:ComponentNode text="PushButton"
- icon="@page_white.png"
- src="@buttons/push_button.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- <explorer:ComponentNode text="RadioButton"
- icon="@page_white.png"
- src="@buttons/radio_button.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- <explorer:ComponentNode text="Checkbox"
- icon="@page_white.png"
- src="@buttons/checkbox.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- <explorer:ComponentNode text="LinkButton"
- icon="@page_white.png"
- src="@buttons/link_button.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- </content:TreeBranch>
- <content:TreeBranch text="Lists"
- icon="@folder.png">
- <explorer:ComponentNode text="ListView"
- icon="@page_white.png"
- src="@lists/list_view.wtkx"
- horizontalScrollBarPolicy="fill_to_capacity"
- verticalScrollBarPolicy="auto"/>
- <explorer:ComponentNode text="ListButton"
- icon="@page_white.png"
- src="@lists/list_button.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- </content:TreeBranch>
- <content:TreeBranch text="Text"
- icon="@folder.png">
- <explorer:ComponentNode text="TextInput"
- icon="@page_white.png"
- src="@text/text_input.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- <explorer:ComponentNode text="TextArea"
- icon="@page_white.png"
- src="@text/text_area.wtkx"
- horizontalScrollBarPolicy="fill"
- verticalScrollBarPolicy="fill_to_capacity"/>
- </content:TreeBranch>
- <content:TreeBranch text="Layout Containers"
- icon="@folder.png">
- <explorer:ComponentNode text="FlowPane"
- icon="@page_white.png"
- src="@layout/flow_pane.wtkx"
- horizontalScrollBarPolicy="fill"
- verticalScrollBarPolicy="fill"/>
- <explorer:ComponentNode text="BoxPane"
- icon="@page_white.png"
- src="@layout/box_pane.wtkx"
- horizontalScrollBarPolicy="fill"
- verticalScrollBarPolicy="fill"/>
- <explorer:ComponentNode text="TablePane"
- icon="@page_white.png"
- src="@layout/table_pane.wtkx"
- horizontalScrollBarPolicy="fill"
- verticalScrollBarPolicy="fill"/>
- <explorer:ComponentNode text="Border"
- icon="@page_white.png"
- src="@layout/border.wtkx"
- horizontalScrollBarPolicy="fill"
- verticalScrollBarPolicy="fill"/>
- <explorer:ComponentNode text="StackPane"
- icon="@page_white.png"
- src="@layout/stack_pane.wtkx"
- horizontalScrollBarPolicy="fill"
- verticalScrollBarPolicy="fill"/>
- <explorer:ComponentNode text="SplitPane"
- icon="@page_white.png"
- src="@layout/split_pane.wtkx"
- horizontalScrollBarPolicy="fill"
- verticalScrollBarPolicy="fill"/>
- <explorer:ComponentNode text="Form"
- icon="@page_white.png"
- src="@layout/form.wtkx"
- horizontalScrollBarPolicy="fill"
- verticalScrollBarPolicy="auto"/>
- <explorer:ComponentNode text="Panel"
- icon="@page_white.png"
- src="@layout/panel.wtkx"
- horizontalScrollBarPolicy="fill"
- verticalScrollBarPolicy="fill"/>
- </content:TreeBranch>
- <content:TreeBranch text="Navigation Containers"
- icon="@folder.png">
- <explorer:ComponentNode text="CardPane"
- icon="@page_white.png"
- src="@navigation/card_pane.wtkx"
- horizontalScrollBarPolicy="fill"
- verticalScrollBarPolicy="fill"/>
- <explorer:ComponentNode text="TabPane"
- icon="@page_white.png"
- src="@navigation/tab_pane.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- <explorer:ComponentNode text="Accordion"
- icon="@page_white.png"
- src="@navigation/accordion.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- <explorer:ComponentNode text="Expander"
- icon="@page_white.png"
- src="@navigation/expander.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- <explorer:ComponentNode text="Rollup"
- icon="@page_white.png"
- src="@navigation/rollup.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- <content:TreeBranch text="Viewports"
- icon="@folder.png">
- <explorer:ComponentNode text="ScrollPane"
- icon="@page_white.png"
- src="@navigation/scroll_pane.wtkx"
- horizontalScrollBarPolicy="fill"
- verticalScrollBarPolicy="fill"/>
- <explorer:ComponentNode text="Panorama"
- icon="@page_white.png"
- src="@navigation/panorama.wtkx"
- horizontalScrollBarPolicy="fill"
- verticalScrollBarPolicy="fill"/>
- </content:TreeBranch>
- </content:TreeBranch>
- <content:TreeBranch text="Progress Indicators"
- icon="@folder.png">
- <explorer:ComponentNode text="Meter"
- icon="@page_white.png"
- src="@progress/meter.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- <explorer:ComponentNode text="ActivityIndicator"
- icon="@page_white.png"
- src="@progress/activity_indicator.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- </content:TreeBranch>
- <content:TreeBranch text="Bounded Range Components"
- icon="@folder.png">
- <explorer:ComponentNode text="ScrollBar"
- icon="@page_white.png"
- src="@boundedrange/scroll_bar.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- <explorer:ComponentNode text="Slider"
- icon="@page_white.png"
- src="@boundedrange/slider.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- <explorer:ComponentNode text="Spinner"
- icon="@page_white.png"
- src="@boundedrange/spinner.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- </content:TreeBranch>
- <content:TreeBranch text="Calendars"
- icon="@folder.png">
- <explorer:ComponentNode text="Calendar"
- icon="@page_white.png"
- src="@calendars/calendar.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- <explorer:ComponentNode text="CalendarButton"
- icon="@page_white.png"
- src="@calendars/calendar_button.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- </content:TreeBranch>
- <content:TreeBranch text="Color Choosers"
- icon="@folder.png">
- <explorer:ComponentNode text="ColorChooser"
- icon="@page_white.png"
- src="@colorchoosers/color_chooser.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- <explorer:ComponentNode text="ColorChooserButton"
- icon="@page_white.png"
- src="@colorchoosers/color_chooser_button.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- </content:TreeBranch>
- <content:TreeBranch text="Menus"
- icon="@folder.png">
- <explorer:ComponentNode text="MenuBar"
- icon="@page_white.png"
- src="@menus/menu_bar.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- <explorer:ComponentNode text="MenuButton"
- icon="@page_white.png"
- src="@menus/menu_button.wtkx"
- horizontalScrollBarPolicy="auto"
- verticalScrollBarPolicy="auto"/>
- </content:TreeBranch>
- <content:TreeBranch text="Tables"
- icon="@folder.png">
- </content:TreeBranch>
- <content:TreeBranch text="Trees"
- icon="@folder.png">
- <explorer:ComponentNode text="TreeView"
- icon="@page_white.png"
- src="@trees/tree_view.wtkx"
- horizontalScrollBarPolicy="fill_to_capacity"
- verticalScrollBarPolicy="auto"/>
- </content:TreeBranch>
- </content:TreeBranch>
- </treeData>
- </TreeView>
- </view>
- </ScrollPane>
- </content>
- </Border>
- </left>
- <right>
- <SplitPane orientation="vertical" splitRatio="0.6">
- <top>
- <TablePane styles="{horizontalSpacing:6}">
- <columns>
- <TablePane.Column width="1*"/>
- <TablePane.Column/>
- </columns>
- <rows>
- <TablePane.Row height="1*">
- <Border>
- <content>
- <ScrollPane wtkx:id="scrollPane">
- <view>
- <Border wtkx:id="contentPane"
- styles="{thickness:0, padding:6}"/>
- </view>
- </ScrollPane>
- </content>
- </Border>
- <TabPane wtkx:id="inspectorTabPane"
- styles="{collapsible:true, tabOrientation:'vertical'}">
+ <CardPane styles="{padding:3}">
+ <SplitPane orientation="horizontal" splitRatio="0.25">
+ <left>
+ <TabPane>
+ <tabs>
+ <Border TabPane.label="Component Explorer">
+ <content>
+ <ScrollPane horizontalScrollBarPolicy="fill_to_capacity">
+ <view>
+ <TreeView wtkx:id="treeView">
+ <nodeRenderer>
+ <content:TreeViewNodeRenderer
+ styles="{padding:1}"/>
+ </nodeRenderer>
+ <treeData>
+ <content:TreeBranch>
+ <content:TreeBranch text="Buttons"
+ icon="@folder.png">
+ <explorer:ComponentNode
+ text="PushButton"
+ icon="@page_white.png"
+ src="@buttons/push_button.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ <explorer:ComponentNode
+ text="RadioButton"
+ icon="@page_white.png"
+ src="@buttons/radio_button.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ <explorer:ComponentNode
+ text="Checkbox"
+ icon="@page_white.png"
+ src="@buttons/checkbox.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ <explorer:ComponentNode
+ text="LinkButton"
+ icon="@page_white.png"
+ src="@buttons/link_button.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ </content:TreeBranch>
+ <content:TreeBranch text="Lists"
+ icon="@folder.png">
+ <explorer:ComponentNode
+ text="ListView"
+ icon="@page_white.png"
+ src="@lists/list_view.wtkx"
+ horizontalScrollBarPolicy="fill_to_capacity"
+ verticalScrollBarPolicy="auto"/>
+ <explorer:ComponentNode
+ text="ListButton"
+ icon="@page_white.png"
+ src="@lists/list_button.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ </content:TreeBranch>
+ <content:TreeBranch text="Text"
+ icon="@folder.png">
+ <explorer:ComponentNode
+ text="TextInput"
+ icon="@page_white.png"
+ src="@text/text_input.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ <explorer:ComponentNode
+ text="TextArea"
+ icon="@page_white.png"
+ src="@text/text_area.wtkx"
+ horizontalScrollBarPolicy="fill"
+ verticalScrollBarPolicy="fill_to_capacity"/>
+ </content:TreeBranch>
+ <content:TreeBranch text="Layout Containers"
+ icon="@folder.png">
+ <explorer:ComponentNode
+ text="FlowPane"
+ icon="@page_white.png"
+ src="@layout/flow_pane.wtkx"
+ horizontalScrollBarPolicy="fill"
+ verticalScrollBarPolicy="fill"/>
+ <explorer:ComponentNode
+ text="BoxPane"
+ icon="@page_white.png"
+ src="@layout/box_pane.wtkx"
+ horizontalScrollBarPolicy="fill"
+ verticalScrollBarPolicy="fill"/>
+ <explorer:ComponentNode
+ text="TablePane"
+ icon="@page_white.png"
+ src="@layout/table_pane.wtkx"
+ horizontalScrollBarPolicy="fill"
+ verticalScrollBarPolicy="fill"/>
+ <explorer:ComponentNode
+ text="Border"
+ icon="@page_white.png"
+ src="@layout/border.wtkx"
+ horizontalScrollBarPolicy="fill"
+ verticalScrollBarPolicy="fill"/>
+ <explorer:ComponentNode
+ text="StackPane"
+ icon="@page_white.png"
+ src="@layout/stack_pane.wtkx"
+ horizontalScrollBarPolicy="fill"
+ verticalScrollBarPolicy="fill"/>
+ <explorer:ComponentNode
+ text="SplitPane"
+ icon="@page_white.png"
+ src="@layout/split_pane.wtkx"
+ horizontalScrollBarPolicy="fill"
+ verticalScrollBarPolicy="fill"/>
+ <explorer:ComponentNode
+ text="Form"
+ icon="@page_white.png"
+ src="@layout/form.wtkx"
+ horizontalScrollBarPolicy="fill"
+ verticalScrollBarPolicy="auto"/>
+ <explorer:ComponentNode
+ text="Panel"
+ icon="@page_white.png"
+ src="@layout/panel.wtkx"
+ horizontalScrollBarPolicy="fill"
+ verticalScrollBarPolicy="fill"/>
+ </content:TreeBranch>
+ <content:TreeBranch
+ text="Navigation Containers"
+ icon="@folder.png">
+ <explorer:ComponentNode
+ text="CardPane"
+ icon="@page_white.png"
+ src="@navigation/card_pane.wtkx"
+ horizontalScrollBarPolicy="fill"
+ verticalScrollBarPolicy="fill"/>
+ <explorer:ComponentNode
+ text="TabPane"
+ icon="@page_white.png"
+ src="@navigation/tab_pane.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ <explorer:ComponentNode
+ text="Accordion"
+ icon="@page_white.png"
+ src="@navigation/accordion.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ <explorer:ComponentNode
+ text="Expander"
+ icon="@page_white.png"
+ src="@navigation/expander.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ <explorer:ComponentNode
+ text="Rollup"
+ icon="@page_white.png"
+ src="@navigation/rollup.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ <content:TreeBranch
+ text="Viewports"
+ icon="@folder.png">
+ <explorer:ComponentNode
+ text="ScrollPane"
+ icon="@page_white.png"
+ src="@navigation/scroll_pane.wtkx"
+ horizontalScrollBarPolicy="fill"
+ verticalScrollBarPolicy="fill"/>
+ <explorer:ComponentNode
+ text="Panorama"
+ icon="@page_white.png"
+ src="@navigation/panorama.wtkx"
+ horizontalScrollBarPolicy="fill"
+ verticalScrollBarPolicy="fill"/>
+ </content:TreeBranch>
+ </content:TreeBranch>
+ <content:TreeBranch
+ text="Progress Indicators"
+ icon="@folder.png">
+ <explorer:ComponentNode
+ text="Meter"
+ icon="@page_white.png"
+ src="@progress/meter.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ <explorer:ComponentNode
+ text="ActivityIndicator"
+ icon="@page_white.png"
+ src="@progress/activity_indicator.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ </content:TreeBranch>
+ <content:TreeBranch
+ text="Bounded Range Components"
+ icon="@folder.png">
+ <explorer:ComponentNode
+ text="ScrollBar"
+ icon="@page_white.png"
+ src="@boundedrange/scroll_bar.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ <explorer:ComponentNode
+ text="Slider"
+ icon="@page_white.png"
+ src="@boundedrange/slider.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ <explorer:ComponentNode
+ text="Spinner"
+ icon="@page_white.png"
+ src="@boundedrange/spinner.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ </content:TreeBranch>
+ <content:TreeBranch
+ text="Calendars"
+ icon="@folder.png">
+ <explorer:ComponentNode
+ text="Calendar"
+ icon="@page_white.png"
+ src="@calendars/calendar.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ <explorer:ComponentNode
+ text="CalendarButton"
+ icon="@page_white.png"
+ src="@calendars/calendar_button.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ </content:TreeBranch>
+ <content:TreeBranch
+ text="Color Choosers"
+ icon="@folder.png">
+ <explorer:ComponentNode
+ text="ColorChooser"
+ icon="@page_white.png"
+ src="@colorchoosers/color_chooser.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ <explorer:ComponentNode
+ text="ColorChooserButton"
+ icon="@page_white.png"
+ src="@colorchoosers/color_chooser_button.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ </content:TreeBranch>
+ <content:TreeBranch
+ text="Menus"
+ icon="@folder.png">
+ <explorer:ComponentNode
+ text="MenuBar"
+ icon="@page_white.png"
+ src="@menus/menu_bar.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ <explorer:ComponentNode
+ text="MenuButton"
+ icon="@page_white.png"
+ src="@menus/menu_button.wtkx"
+ horizontalScrollBarPolicy="auto"
+ verticalScrollBarPolicy="auto"/>
+ </content:TreeBranch>
+ <content:TreeBranch
+ text="Tables"
+ icon="@folder.png">
+ </content:TreeBranch>
+ <content:TreeBranch
+ text="Trees"
+ icon="@folder.png">
+ <explorer:ComponentNode
+ text="TreeView"
+ icon="@page_white.png"
+ src="@trees/tree_view.wtkx"
+ horizontalScrollBarPolicy="fill_to_capacity"
+ verticalScrollBarPolicy="auto"/>
+ </content:TreeBranch>
+ </content:TreeBranch>
+ </treeData>
+ </TreeView>
+ </view>
+ </ScrollPane>
+ </content>
+ </Border>
+ </tabs>
+ </TabPane>
+ </left>
+ <right>
+ <SplitPane orientation="vertical" splitRatio="0.6">
+ <top>
+ <SplitPane orientation="horizontal" splitRatio="0.6">
+ <left>
+ <TabPane wtkx:id="contentTabPane">
+ <corner>
+ <BoxPane styles="{padding:{right:6},
+ horizontalAlignment:'right', fill:true}">
+ <MenuButton styles="{toolbar:true}">
+ <wtkx:define>
+ <ButtonGroup wtkx:id="horizontalScrollBarPolicyGroup"/>
+ <ButtonGroup wtkx:id="verticalScrollBarPolicyGroup"/>
+ </wtkx:define>
+ <menu>
+ <Menu>
+ <sections>
+ <Menu.Section>
+ <Menu.Item buttonData="Horizontal Scroll Bar Policy">
+ <menu>
+ <Menu>
+ <sections>
+ <Menu.Section>
+ <Menu.Item wtkx:id="horizontalAutoButton"
+ toggleButton="true"
+ buttonGroup="$horizontalScrollBarPolicyGroup"
+ buttonData="Auto"/>
+ <Menu.Item wtkx:id="horizontalFillButton"
+ toggleButton="true"
+ buttonGroup="$horizontalScrollBarPolicyGroup"
+ buttonData="Fill"/>
+ <Menu.Item wtkx:id="horizontalFillToCapacityButton"
+ toggleButton="true"
+ buttonGroup="$horizontalScrollBarPolicyGroup"
+ buttonData="Fill To Capacity"/>
+ <Menu.Item wtkx:id="horizontalNeverButton"
+ toggleButton="true"
+ buttonGroup="$horizontalScrollBarPolicyGroup"
+ buttonData="Never"/>
+ </Menu.Section>
+ </sections>
+ </Menu>
+ </menu>
+ </Menu.Item>
+ <Menu.Item buttonData="Vertical Scroll Bar Policy">
+ <menu>
+ <Menu>
+ <sections>
+ <Menu.Section>
+ <Menu.Item wtkx:id="verticalAutoButton"
+ toggleButton="true"
+ buttonGroup="$verticalScrollBarPolicyGroup"
+ buttonData="Auto"/>
+ <Menu.Item wtkx:id="verticalFillButton"
+ toggleButton="true"
+ buttonGroup="$verticalScrollBarPolicyGroup"
+ buttonData="Fill"/>
+ <Menu.Item wtkx:id="verticalFillToCapacityButton"
+ toggleButton="true"
+ buttonGroup="$verticalScrollBarPolicyGroup"
+ buttonData="Fill To Capacity"/>
+ <Menu.Item wtkx:id="verticalNeverButton"
+ toggleButton="true"
+ buttonGroup="$verticalScrollBarPolicyGroup"
+ buttonData="Never"/>
+ </Menu.Section>
+ </sections>
+ </Menu>
+ </menu>
+ </Menu.Item>
+ </Menu.Section>
+ </sections>
+ </Menu>
+ </menu>
+ </MenuButton>
+ </BoxPane>
+ </corner>
+ </TabPane>
+ </left>
+ <right>
+ <TabPane wtkx:id="inspectorTabPane">
<tabs>
<Border TabPane.label="%properties">
<content>
@@ -306,26 +415,37 @@
</Border>
</tabs>
</TabPane>
- </TablePane.Row>
- </rows>
- </TablePane>
- </top>
- <bottom>
- <Border>
- <content>
- <ScrollPane horizontalScrollBarPolicy="fill"
- verticalScrollBarPolicy="fill">
- <view>
- <CardPane styles="{padding:10}">
- <tools:EventLogger wtkx:id="eventLogger"/>
- </CardPane>
- </view>
- </ScrollPane>
- </content>
- </Border>
- </bottom>
- </SplitPane>
- </right>
- </SplitPane>
+ </right>
+ </SplitPane>
+ </top>
+ <bottom>
+ <TabPane>
+ <tabs>
+ <tools:EventLogger wtkx:id="eventLogger"
+ TabPane.label="Event Log"/>
+ </tabs>
+ <corner>
+ <BoxPane styles="{padding:{right:6},
+ horizontalAlignment:'right', fill:true}">
+ <MenuButton styles="{toolbar:true}">
+ <menu>
+ <Menu>
+ <sections>
+ <Menu.Section>
+ <Menu.Item buttonData="Clear Event Log"
+ ButtonPressListener.buttonPressed="eventLogger.clearLog();"/>
+ </Menu.Section>
+ </sections>
+ </Menu>
+ </menu>
+ </MenuButton>
+ </BoxPane>
+ </corner>
+ </TabPane>
+ </bottom>
+ </SplitPane>
+ </right>
+ </SplitPane>
+ </CardPane>
</content>
</Window>
Modified: incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLogger.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLogger.java?rev=831909&r1=831908&r2=831909&view=diff
==============================================================================
--- incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLogger.java (original)
+++ incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLogger.java Mon Nov 2 14:59:53 2009
@@ -43,6 +43,16 @@
*/
public class EventLogger extends Container {
/**
+ * Event logger skin interface. Event logger skins must implement this.
+ */
+ public interface Skin {
+ /**
+ * Clears the event log.
+ */
+ public void clearLog();
+ }
+
+ /**
* Declared event sequence.
*/
public final class DeclaredEventSequence implements Sequence<Method>, Iterable<Method> {
@@ -301,6 +311,14 @@
return includeEventGroup;
}
+ /**
+ * Clears the event log.
+ */
+ public void clearLog() {
+ EventLogger.Skin eventLoggerSkin = (EventLogger.Skin)getSkin();
+ eventLoggerSkin.clearLog();
+ }
+
private void registerEventListeners() {
Method[] methods = source.getClass().getMethods();
Modified: incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLoggerSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLoggerSkin.java?rev=831909&r1=831908&r2=831909&view=diff
==============================================================================
--- incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLoggerSkin.java (original)
+++ incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/EventLoggerSkin.java Mon Nov 2 14:59:53 2009
@@ -41,7 +41,7 @@
import org.apache.pivot.wtkx.WTKX;
import org.apache.pivot.wtkx.WTKXSerializer;
-class EventLoggerSkin extends ContainerSkin implements EventLoggerListener {
+class EventLoggerSkin extends ContainerSkin implements EventLogger.Skin, EventLoggerListener {
private static class TreeNodeComparator implements Comparator<TreeNode> {
public int compare(TreeNode treeNode1, TreeNode treeNode2) {
return treeNode1.getText().compareTo(treeNode2.getText());
@@ -211,13 +211,22 @@
content.setSize(getWidth(), getHeight());
}
+ // EventLogger.Skin methods
+
+ @Override
+ public void clearLog() {
+ firedEventsTableView.getTableData().clear();
+ }
+
+ // EventLoggerListener methods
+
@Override
public void sourceChanged(EventLogger eventLogger, Component previousSource) {
+ clearLog();
+
HashMap<Class<?>, ArrayList<Method>> buckets = new HashMap<Class<?>, ArrayList<Method>>();
- Sequence<Method> declaredEvents = eventLogger.getDeclaredEvents();
- for (int i = 0, n = declaredEvents.getLength(); i < n; i++) {
- Method event = declaredEvents.get(i);
+ for (Method event : eventLogger.getDeclaredEvents()) {
Class<?> listenerInterface = event.getDeclaringClass();
ArrayList<Method> bucket = buckets.get(listenerInterface);
Modified: incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/event_logger_skin.wtkx
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/event_logger_skin.wtkx?rev=831909&r1=831908&r2=831909&view=diff
==============================================================================
--- incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/event_logger_skin.wtkx (original)
+++ incubator/pivot/trunk/tools/src/org/apache/pivot/tools/wtk/event_logger_skin.wtkx Mon Nov 2 14:59:53 2009
@@ -16,59 +16,50 @@
limitations under the License.
-->
-<TablePane
+<SplitPane orientation="horizontal" splitRatio="0.25"
xmlns:wtkx="http://pivot.apache.org/wtkx"
xmlns:content="org.apache.pivot.wtk.content"
xmlns="org.apache.pivot.wtk">
- <columns>
- <TablePane.Column width="1*"/>
- </columns>
- <rows>
- <TablePane.Row>
- <FlowPane TablePane.columnSpan="2" styles="{padding:6, alignToBaseline:true}">
- <PushButton buttonData="%clearEvents"
- ButtonPressListener.buttonPressed="firedEventsTableView.getTableData().clear()"/>
- </FlowPane>
- </TablePane.Row>
- <TablePane.Row height="1*">
- <SplitPane orientation="horizontal" splitRatio="0.25">
- <left>
- <Border>
- <content>
- <ScrollPane horizontalScrollBarPolicy="fill_to_capacity">
- <view>
- <TreeView wtkx:id="declaredEventsTreeView"
- checkmarksEnabled="true"
- showMixedCheckmarkState="true"
- selectMode="none">
- <nodeRenderer>
- <content:TreeViewNodeRenderer showIcon="false"/>
- </nodeRenderer>
- </TreeView>
- </view>
- </ScrollPane>
- </content>
- </Border>
- </left>
- <right>
- <Border>
- <content>
- <ScrollPane horizontalScrollBarPolicy="fill_to_capacity">
- <view>
- <TableView wtkx:id="firedEventsTableView" selectMode="none">
- <columns>
- <TableView.Column name="interface" width="175" />
- <TableView.Column name="method" width="200" />
- <TableView.Column name="arguments" width="1*"
- minimumWidth="200"/>
- </columns>
- </TableView>
- </view>
- </ScrollPane>
- </content>
- </Border>
- </right>
- </SplitPane>
- </TablePane.Row>
- </rows>
-</TablePane>
+ <left>
+ <Border>
+ <content>
+ <ScrollPane horizontalScrollBarPolicy="fill_to_capacity">
+ <view>
+ <TreeView wtkx:id="declaredEventsTreeView"
+ checkmarksEnabled="true"
+ showMixedCheckmarkState="true"
+ selectMode="none">
+ <nodeRenderer>
+ <content:TreeViewNodeRenderer showIcon="false"/>
+ </nodeRenderer>
+ </TreeView>
+ </view>
+ </ScrollPane>
+ </content>
+ </Border>
+ </left>
+ <right>
+ <Border>
+ <content>
+ <ScrollPane horizontalScrollBarPolicy="fill_to_capacity">
+ <view>
+ <TableView wtkx:id="firedEventsTableView" selectMode="none">
+ <columns>
+ <TableView.Column name="interface" width="175"
+ headerData="Declaring Class"/>
+ <TableView.Column name="method" width="200"
+ headerData="Event"/>
+ <TableView.Column name="arguments" width="1*"
+ headerData="Arguments" minimumWidth="200"/>
+ </columns>
+ </TableView>
+ </view>
+ <columnHeader>
+ <TableViewHeader tableView="$firedEventsTableView"
+ sortMode="none" styles="{headersPressable:false}"/>
+ </columnHeader>
+ </ScrollPane>
+ </content>
+ </Border>
+ </right>
+</SplitPane>