Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarolyn MacLeod2003-11-05 17:25:39 +0000
committerCarolyn MacLeod2003-11-05 17:25:39 +0000
commite2670f77f23e0d7a40ec30e904322e9b0d0d745d (patch)
tree2bfe7865f180a0e52b7bb22be392e8f20ef3d757 /examples
parent743604d746feeffb2c2258124eff6a6a1f3cd973 (diff)
downloadeclipse.platform.swt-e2670f77f23e0d7a40ec30e904322e9b0d0d745d.tar.gz
eclipse.platform.swt-e2670f77f23e0d7a40ec30e904322e9b0d0d745d.tar.xz
eclipse.platform.swt-e2670f77f23e0d7a40ec30e904322e9b0d0d745d.zip
Added selectable event logging.
Diffstat (limited to 'examples')
-rw-r--r--examples/org.eclipse.swt.examples/src/examples_control.properties17
-rwxr-xr-xexamples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ControlExample.java161
-rw-r--r--examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CustomControlExample.java2
-rwxr-xr-xexamples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/DialogTab.java8
-rwxr-xr-xexamples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ShellTab.java1
-rwxr-xr-xexamples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/Tab.java287
6 files changed, 300 insertions, 176 deletions
diff --git a/examples/org.eclipse.swt.examples/src/examples_control.properties b/examples/org.eclipse.swt.examples/src/examples_control.properties
index 548a200e5a..575cd97464 100644
--- a/examples/org.eclipse.swt.examples/src/examples_control.properties
+++ b/examples/org.eclipse.swt.examples/src/examples_control.properties
@@ -31,6 +31,13 @@ Enabled = Enabled
Visible = Visible
Preferred = Preferred
Styles = Styles
+Listeners = Listeners
+Select_Listeners = Select Listeners
+Listen = Listen
+Clear = Clear
+Select_All = Select All
+Deselect_All = Deselect All
+OK = OK
Text_Labels = Text Labels
Image_Labels = Image Labels
Custom_Labels = Custom Labels
@@ -155,12 +162,10 @@ CTabItem1_2 = CTab 2
CItem_Colors = CTabItem Colors
CTabItem_content = CTabItem Content
TableTree_column = Column
-Menu_Controls = Control
-MenuItem_Log = &Log Events
-MenuItem_Exit = E&xit
-MenuItem_Copy = &Copy
-MenuItem_SelectAll = Select &All
-MenuItem_Clear = C&lear
+MenuItem_Cut = Cu&t Ctrl+X
+MenuItem_Copy = &Copy Ctrl+C
+MenuItem_Paste = &Paste Ctrl+V
+MenuItem_SelectAll = Select &All Ctrl+A
Orientation = Orientation
Default = Default (Inherit)
diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ControlExample.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ControlExample.java
index e5a1bb53ba..404a771edc 100755
--- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ControlExample.java
+++ b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ControlExample.java
@@ -12,7 +12,6 @@ package org.eclipse.swt.examples.controlexample;
import org.eclipse.swt.*;
-import org.eclipse.swt.custom.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
@@ -24,12 +23,7 @@ public class ControlExample {
private static ResourceBundle resourceBundle =
ResourceBundle.getBundle("examples_control");
private ShellTab shellTab;
- private SashForm form;
private TabFolder tabFolder;
- private Text eventConsole;
- private boolean logging = false;
- private boolean [] eventsFilter = new boolean [35];
- static boolean standAlone = false;
Image images[];
static final int ciClosedFolder = 0, ciOpenFolder = 1, ciTarget = 2;
@@ -37,20 +31,6 @@ public class ControlExample {
"closedFolder.gif",
"openFolder.gif",
"target.gif" };
- static final String [] EVENT_TYPES = { "",
- "KeyDown", "KeyUp", "MouseDown", "MouseUp", "MouseMove", "MouseEnter",
- "MouseExit", "MouseDoubleClick", "Paint", "Move", "Resize", "Dispose",
- "Selection", "DefaultSelection", "FocusIn", "FocusOut", "Expand", "Collapse",
- "Iconify", "Deiconify", "Close", "Show", "Hide", "Modify",
- "Verify", "Activate", "Deactivate", "Help", "DragDetect", "Arm",
- "Traverse", "MouseHover", "HardKeyDown", "HardKeyUp"
- };
- static final int [] DEFAULT_FILTER = {
- SWT.KeyDown, SWT.KeyUp, SWT.MouseDown, SWT.MouseUp, SWT.MouseDoubleClick, SWT.Selection,
- SWT.DefaultSelection, SWT.Expand, SWT.Collapse, SWT.Iconify, SWT.Deiconify, SWT.Close,
- SWT.Show, SWT.Hide, SWT.Modify, SWT.Verify, SWT.Activate, SWT.Deactivate,
- SWT.Help, SWT.DragDetect, SWT.Arm, SWT.Traverse, SWT.HardKeyDown, SWT.HardKeyUp
- };
/**
* Creates an instance of a ControlExample embedded inside
@@ -60,8 +40,7 @@ public class ControlExample {
*/
public ControlExample(Composite parent) {
initResources();
- form = new SashForm (parent,SWT.VERTICAL);
- tabFolder = new TabFolder (form, SWT.NONE);
+ tabFolder = new TabFolder (parent, SWT.NONE);
Tab [] tabs = createTabs();
for (int i=0; i<tabs.length; i++) {
TabItem item = new TabItem (tabFolder, SWT.NONE);
@@ -69,93 +48,6 @@ public class ControlExample {
item.setControl (tabs [i].createTabFolderPage (tabFolder));
item.setData (tabs [i]);
}
- if (standAlone) {
- createControlExampleMenu (parent.getShell ());
- eventConsole = new Text(form, SWT.MULTI | SWT.V_SCROLL);
- form.setWeights(new int[] {100, 0});
- createEventConsolePopup (eventConsole);
- for (int i = 0; i < DEFAULT_FILTER.length; i++) {
- eventsFilter [DEFAULT_FILTER [i]] = true;
- }
- }
- }
-
- /**
- * Hide the event logger.
- */
- void closeEventConsole() {
- logging = false;
- form.setWeights(new int[] {100, 0});
- eventConsole.setEnabled (false);
- TabItem[] tabs = tabFolder.getItems ();
- for (int i = 0; i < tabs.length; i++) {
- Tab tab = (Tab) tabs[i].getData ();
- tab.recreateExampleWidgets ();
- }
- }
-
- /**
- * Create the menubar
- */
- void createControlExampleMenu(final Shell shell) {
- Menu bar = new Menu (shell, SWT.BAR);
- MenuItem consoleItem = new MenuItem (bar, SWT.CASCADE);
- consoleItem.setText (ControlExample.getResourceString("Menu_Controls"));
- shell.setMenuBar (bar);
- Menu dropDown = new Menu (bar);
- consoleItem.setMenu (dropDown);
-
- final MenuItem showEvents = new MenuItem (dropDown, SWT.CHECK);
- showEvents.setText (ControlExample.getResourceString("MenuItem_Log"));
- showEvents.addListener (SWT.Selection, new Listener () {
- public void handleEvent (Event e) {
- if (showEvents.getSelection()) {
- openEventConsole (shell);
- } else {
- closeEventConsole ();
- }
- }
- });
-
- final MenuItem exit = new MenuItem (dropDown, SWT.NONE);
- exit.setText (ControlExample.getResourceString("MenuItem_Exit"));
- exit.addListener (SWT.Selection, new Listener () {
- public void handleEvent (Event e) {
- shell.dispose();
- }
- });
- }
-
- /**
- * Create the menubar
- */
- void createEventConsolePopup (final Text console) {
- Menu popup = new Menu (console.getShell (), SWT.POP_UP);
- console.setMenu (popup);
-
- MenuItem copy = new MenuItem (popup, SWT.PUSH);
- copy.setAccelerator(SWT.MOD1 + 'C');
- copy.setText (ControlExample.getResourceString("MenuItem_Copy") + "\tCtrl+C");
- copy.addListener (SWT.Selection, new Listener () {
- public void handleEvent (Event event) {
- console.copy ();
- }
- });
- MenuItem selectAll = new MenuItem (popup, SWT.PUSH);
- selectAll.setAccelerator(SWT.MOD1 + 'A');
- selectAll.setText(ControlExample.getResourceString("MenuItem_SelectAll"));
- selectAll.addListener (SWT.Selection, new Listener () {
- public void handleEvent (Event event) {
- console.selectAll ();
- }
- });
- MenuItem clear = new MenuItem (popup, SWT.PUSH);
- clear.setText (ControlExample.getResourceString("MenuItem_Clear"));
- clear.addListener (SWT.Selection, new Listener () {
- public void handleEvent (Event event) {
- console.setText ("");
- }
- });
}
/**
@@ -271,39 +163,15 @@ public class ControlExample {
}
/**
- * Answers true if this example is currently logging all
- * events, and false otherwise.
- */
- public boolean isLogging () {
- return logging;
- }
- /**
- * Logs an event to the event console.
- */
- void log(Event event) {
- if (logging && eventsFilter [event.type]) {
- StringBuffer output = new StringBuffer (EVENT_TYPES[event.type]);
- output.append (": ");
- output.append (event.widget.toString ());
- output.append (" X: ");
- output.append (event.x);
- output.append (" Y: ");
- output.append (event.y);
- output.append ("\n");
- eventConsole.append (output.toString ());
- }
- }
-
- /**
* Invokes as a standalone program.
*/
public static void main(String[] args) {
- standAlone = true;
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
ControlExample instance = new ControlExample(shell);
shell.setText(getResourceString("window.title"));
+ setShellSize(display, shell);
shell.open();
while (! shell.isDisposed()) {
if (! display.readAndDispatch()) display.sleep();
@@ -312,24 +180,23 @@ public class ControlExample {
}
/**
- * Open the event logger.
+ * Grabs input focus.
*/
- void openEventConsole(Shell shell) {
- logging = true;
- form.setWeights(new int[] {80,20});
- eventConsole.setEnabled (true);
- TabItem[] tabs = tabFolder.getItems ();
- for (int i = 0; i < tabs.length; i++) {
- Tab tab = (Tab) tabs[i].getData ();
- tab.recreateExampleWidgets ();
- }
+ public void setFocus() {
+ tabFolder.setFocus();
}
/**
- * Grabs input focus.
+ * Sets the size of the shell to it's "packed" size,
+ * unless that makes it bigger than the display,
+ * in which case set it to 9/10 of display size.
*/
- public void setFocus() {
- tabFolder.setFocus();
+ static void setShellSize (Display display, Shell shell) {
+ Rectangle bounds = display.getBounds();
+ Point size = shell.computeSize (SWT.DEFAULT, SWT.DEFAULT);
+ if (size.x > bounds.width) size.x = bounds.width * 9 / 10;
+ if (size.y > bounds.height) size.y = bounds.height * 9 / 10;
+ shell.setSize (size);
}
}
diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CustomControlExample.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CustomControlExample.java
index c5b6431225..ecb047eb97 100644
--- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CustomControlExample.java
+++ b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/CustomControlExample.java
@@ -44,12 +44,12 @@ public class CustomControlExample extends ControlExample {
* Invokes as a standalone program.
*/
public static void main(String[] args) {
- standAlone = true;
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
CustomControlExample instance = new CustomControlExample(shell);
shell.setText(getResourceString("custom.window.title"));
+ setShellSize(display, shell);
shell.open();
while (! shell.isDisposed()) {
if (! display.readAndDispatch()) display.sleep();
diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/DialogTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/DialogTab.java
index 7891f8aff9..d0f4ea962f 100755
--- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/DialogTab.java
+++ b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/DialogTab.java
@@ -209,7 +209,7 @@ class DialogTab extends Tab {
void createControlGroup () {
/*
* Create the "Control" group. This is the group on the
- * left half of each example tab. It consists of the
+ * right half of each example tab. It consists of the
* style group, the display group and the size group.
*/
controlGroup = new Group (tabFolderPage, SWT.NONE);
@@ -401,6 +401,12 @@ class DialogTab extends Tab {
}
/**
+ * The platform dialogs do not have SWT listeners.
+ */
+ void createListenersGroup () {
+ }
+
+ /**
* Handle a dialog type combo selection event.
*
* @param event the selection event
diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ShellTab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ShellTab.java
index ac8d357837..d566d1f364 100755
--- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ShellTab.java
+++ b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/ShellTab.java
@@ -101,6 +101,7 @@ class ShellTab extends Tab {
/* Set the size, title and open the shell */
currentShell.setSize (300, 100);
currentShell.setText (ControlExample.getResourceString("Title") + shellCount);
+ hookListeners (currentShell);
currentShell.open ();
shellCount++;
}
diff --git a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/Tab.java b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/Tab.java
index b895ec799f..5383c08612 100755
--- a/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/Tab.java
+++ b/examples/org.eclipse.swt.examples/src/org/eclipse/swt/examples/controlexample/Tab.java
@@ -42,7 +42,7 @@ abstract class Tab {
/* Common groups and composites */
Composite tabFolderPage;
- Group exampleGroup, controlGroup, displayGroup, sizeGroup, styleGroup, colorGroup;
+ Group exampleGroup, controlGroup, listenersGroup, displayGroup, sizeGroup, styleGroup, colorGroup;
/* Controlling instance */
final ControlExample instance;
@@ -62,6 +62,28 @@ abstract class Tab {
Color backgroundColor, foregroundColor;
Font font;
+ /* Event logging variables and controls */
+ Text eventConsole;
+ boolean logging = false;
+ boolean [] eventsFilter;
+
+ static final String [] EVENT_NAMES = {
+ "", // event types are sequentially numbered from 1, so add placeholder for 0
+ "KeyDown", "KeyUp",
+ "MouseDown", "MouseUp", "MouseMove", "MouseEnter", "MouseExit", "MouseDoubleClick",
+ "Paint", "Move", "Resize", "Dispose",
+ "Selection", "DefaultSelection",
+ "FocusIn", "FocusOut",
+ "Expand", "Collapse",
+ "Iconify", "Deiconify", "Close",
+ "Show", "Hide",
+ "Modify", "Verify",
+ "Activate", "Deactivate",
+ "Help", "DragDetect", "Arm", "Traverse", "MouseHover",
+ "HardKeyDown", "HardKeyUp",
+ "MenuDetect"
+ };
+
/**
* Creates the Tab within a given instance of ControlExample.
*/
@@ -77,14 +99,11 @@ abstract class Tab {
/*
* Create the "Control" group. This is the group on the
- * left half of each example tab. It consists of the
+ * right half of each example tab. It consists of the
* style group, the display group and the size group.
*/
controlGroup = new Group (tabFolderPage, SWT.NONE);
- GridLayout gridLayout= new GridLayout ();
- controlGroup.setLayout (gridLayout);
- gridLayout.numColumns = 2;
- gridLayout.makeColumnsEqualWidth = true;
+ controlGroup.setLayout (new GridLayout (2, true));
controlGroup.setLayoutData (new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
controlGroup.setText (ControlExample.getResourceString("Parameters"));
@@ -251,10 +270,48 @@ abstract class Tab {
}
/**
+ * Create the event console popup menu.
+ */
+ void createEventConsolePopup () {
+ Menu popup = new Menu (eventConsole.getShell (), SWT.POP_UP);
+ eventConsole.setMenu (popup);
+
+ MenuItem cut = new MenuItem (popup, SWT.PUSH);
+ cut.setText (ControlExample.getResourceString("MenuItem_Cut"));
+ cut.addListener (SWT.Selection, new Listener () {
+ public void handleEvent (Event event) {
+ eventConsole.cut ();
+ }
+ });
+ MenuItem copy = new MenuItem (popup, SWT.PUSH);
+ copy.setText (ControlExample.getResourceString("MenuItem_Copy"));
+ copy.addListener (SWT.Selection, new Listener () {
+ public void handleEvent (Event event) {
+ eventConsole.copy ();
+ }
+ });
+ MenuItem paste = new MenuItem (popup, SWT.PUSH);
+ paste.setText (ControlExample.getResourceString("MenuItem_Paste"));
+ paste.addListener (SWT.Selection, new Listener () {
+ public void handleEvent (Event event) {
+ eventConsole.paste ();
+ }
+ });
+ new MenuItem (popup, SWT.SEPARATOR);
+ MenuItem selectAll = new MenuItem (popup, SWT.PUSH);
+ selectAll.setText(ControlExample.getResourceString("MenuItem_SelectAll"));
+ selectAll.addListener (SWT.Selection, new Listener () {
+ public void handleEvent (Event event) {
+ eventConsole.selectAll ();
+ }
+ });
+ }
+
+ /**
* Creates the "Example" group. The "Example" group
* is typically the left hand column in the tab.
*/
- void createExampleGroup () {
+ void createExampleGroup () {
exampleGroup = new Group (tabFolderPage, SWT.NONE);
GridLayout gridLayout = new GridLayout ();
exampleGroup.setLayout (gridLayout);
@@ -270,6 +327,136 @@ abstract class Tab {
/* Do nothing */
}
+ /**
+ * Creates and opens the "Listener selection" dialog.
+ */
+ void createListenerSelectionDialog () {
+ final Shell dialog = new Shell (tabFolderPage.getShell (), SWT.DIALOG_TRIM);
+ dialog.setText (ControlExample.getResourceString ("Select_Listeners"));
+ dialog.setLayout (new GridLayout (2, false));
+ final Table table = new Table (dialog, SWT.BORDER | SWT.V_SCROLL | SWT.CHECK);
+ GridData data = new GridData(GridData.FILL_BOTH);
+ data.verticalSpan = 2;
+ table.setLayoutData(data);
+ for (int i = 1; i < EVENT_NAMES.length; i++) {
+ TableItem item = new TableItem (table, SWT.NONE);
+ item.setText (EVENT_NAMES[i]);
+ item.setChecked (eventsFilter[i]);
+ }
+ Button selectAll = new Button (dialog, SWT.PUSH);
+ selectAll.setText(ControlExample.getResourceString ("Select_All"));
+ selectAll.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
+ selectAll.addSelectionListener (new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ TableItem [] items = table.getItems();
+ for (int i = 1; i < EVENT_NAMES.length; i++) {
+ items[i - 1].setChecked(true);
+ }
+ }
+ });
+ Button deselectAll = new Button (dialog, SWT.PUSH);
+ deselectAll.setText(ControlExample.getResourceString ("Deselect_All"));
+ deselectAll.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_BEGINNING));
+ deselectAll.addSelectionListener (new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ TableItem [] items = table.getItems();
+ for (int i = 1; i < EVENT_NAMES.length; i++) {
+ items[i - 1].setChecked(false);
+ }
+ }
+ });
+ Label filler = new Label(dialog, SWT.NONE);
+ Button ok = new Button (dialog, SWT.PUSH);
+ ok.setText(ControlExample.getResourceString ("OK"));
+ dialog.setDefaultButton(ok);
+ ok.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
+ ok.addSelectionListener (new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ TableItem [] items = table.getItems();
+ for (int i = 1; i < EVENT_NAMES.length; i++) {
+ eventsFilter[i] = items[i - 1].getChecked();
+ }
+ dialog.dispose();
+ }
+ });
+ dialog.pack ();
+ dialog.open ();
+ while (! dialog.isDisposed()) {
+ if (! dialog.getDisplay().readAndDispatch()) dialog.getDisplay().sleep();
+ }
+ }
+
+ /**
+ * Creates the "Listeners" group. The "Listeners" group
+ * goes below the "Example" and "Control" groups.
+ */
+ void createListenersGroup () {
+ listenersGroup = new Group (tabFolderPage, SWT.NONE);
+ listenersGroup.setLayout (new GridLayout (3, false));
+ GridData gridData = new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_VERTICAL);
+ gridData.horizontalSpan = 2;
+ listenersGroup.setLayoutData (gridData);
+ listenersGroup.setText (ControlExample.getResourceString ("Listeners"));
+
+ /*
+ * Create the button to access the 'Listeners' dialog.
+ */
+ Button listenersButton = new Button (listenersGroup, SWT.PUSH);
+ listenersButton.setText (ControlExample.getResourceString ("Select_Listeners"));
+ listenersButton.addSelectionListener (new SelectionAdapter() {
+ public void widgetSelected (SelectionEvent e) {
+ createListenerSelectionDialog ();
+ recreateExampleWidgets ();
+ }
+ });
+
+ /*
+ * Create the checkbox to add/remove listeners to/from the example widgets.
+ */
+ final Button listenCheckbox = new Button (listenersGroup, SWT.CHECK);
+ listenCheckbox.setText (ControlExample.getResourceString ("Listen"));
+ listenCheckbox.addSelectionListener (new SelectionAdapter () {
+ public void widgetSelected(SelectionEvent e) {
+ logging = listenCheckbox.getSelection ();
+ recreateExampleWidgets ();
+ }
+ });
+
+ /*
+ * Create the button to clear the text.
+ */
+ Button clearButton = new Button (listenersGroup, SWT.PUSH);
+ clearButton.setText (ControlExample.getResourceString ("Clear"));
+ clearButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
+ clearButton.addSelectionListener (new SelectionAdapter() {
+ public void widgetSelected (SelectionEvent e) {
+ eventConsole.setText ("");
+ }
+ });
+
+ /* Initialize the eventsFilter to log all events. */
+ eventsFilter = new boolean [EVENT_NAMES.length];
+ for (int i = 1; i < EVENT_NAMES.length; i++) {
+ eventsFilter [i] = true;
+ }
+
+ /* Create the event console Text. */
+ eventConsole = new Text (listenersGroup, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
+ GridData data = new GridData (GridData.FILL_BOTH);
+ data.horizontalSpan = 3;
+ data.heightHint = 80;
+ eventConsole.setLayoutData (data);
+ createEventConsolePopup ();
+ eventConsole.addKeyListener (new KeyAdapter () {
+ public void keyPressed (KeyEvent e) {
+ if ((e.keyCode == 'A' || e.keyCode == 'a') && (e.stateMask & SWT.MOD1) != 0) {
+ eventConsole.selectAll ();
+ e.doit = false;
+ }
+ }
+ });
+ }
+
void createOrientationGroup () {
/* Create Orientation group*/
orientationGroup = new Group (controlGroup, SWT.NONE);
@@ -357,15 +544,16 @@ abstract class Tab {
* Create a two column page.
*/
tabFolderPage = new Composite (tabFolder, SWT.NONE);
- GridLayout gridLayout = new GridLayout ();
- tabFolderPage.setLayout (gridLayout);
- gridLayout.numColumns = 2;
+ tabFolderPage.setLayout (new GridLayout (2, false));
- /* Create the "Example" and "Control" columns */
+ /* Create the "Example" and "Control" groups. */
createExampleGroup ();
createControlGroup ();
-
- /* Create the widgets in the two columns */
+
+ /* Create the "Listeners" group under the "Control" group. */
+ createListenersGroup ();
+
+ /* Create and initialize the example and control widgets. */
createExampleWidgets ();
hookExampleWidgetListeners ();
createControlWidgets ();
@@ -427,26 +615,83 @@ abstract class Tab {
}
/**
- * Hook all listeners to all controls.
+ * Hooks all listeners to all example controls.
*/
void hookExampleWidgetListeners () {
- if (instance.isLogging()) {
+ if (logging) {
Control[] exampleControls = getExampleWidgets();
+ for (int i = 0; i < exampleControls.length; i++) {
+ hookListeners (exampleControls [i]);
+ }
+ }
+ }
+
+ /**
+ * Hooks all listeners to the specified control.
+ */
+ void hookListeners (Control control) {
+ if (logging) {
Listener listener = new Listener() {
public void handleEvent (Event event) {
- instance.log (event);
+ log (event);
}
};
- for (int i = 0; i < exampleControls.length; i++) {
- Control control = exampleControls [i];
- for (int j = SWT.KeyDown; j < SWT.HardKeyUp; j++) {
- control.addListener (j, listener);
- }
+ for (int j = 1; j < EVENT_NAMES.length; j++) {
+ control.addListener (j, listener);
}
}
}
/**
+ * Logs an event to the event console.
+ */
+ void log(Event event) {
+ if (logging && eventsFilter [event.type]) {
+ String toString = EVENT_NAMES[event.type] + ": ";
+ switch (event.type) {
+ case SWT.KeyDown:
+ case SWT.KeyUp: toString += new KeyEvent (event).toString (); break;
+ case SWT.MouseDown:
+ case SWT.MouseUp:
+ case SWT.MouseMove:
+ case SWT.MouseEnter:
+ case SWT.MouseExit:
+ case SWT.MouseDoubleClick:
+ case SWT.MouseHover: toString += new MouseEvent (event).toString (); break;
+ case SWT.Paint: toString += new PaintEvent (event).toString (); break;
+ case SWT.Move:
+ case SWT.Resize: toString += new ControlEvent (event).toString (); break;
+ case SWT.Dispose: toString += new DisposeEvent (event).toString (); break;
+ case SWT.Selection:
+ case SWT.DefaultSelection: toString += new SelectionEvent (event).toString (); break;
+ case SWT.FocusIn:
+ case SWT.FocusOut: toString += new FocusEvent (event).toString (); break;
+ case SWT.Expand:
+ case SWT.Collapse: toString += new TreeEvent (event).toString (); break;
+ case SWT.Iconify:
+ case SWT.Deiconify:
+ case SWT.Close:
+ case SWT.Activate:
+ case SWT.Deactivate: toString += new ShellEvent (event).toString (); break;
+ case SWT.Show:
+ case SWT.Hide: toString += new MenuEvent (event).toString (); break;
+ case SWT.Modify: toString += new ModifyEvent (event).toString (); break;
+ case SWT.Verify: toString += new VerifyEvent (event).toString (); break;
+ case SWT.Help: toString += new HelpEvent (event).toString (); break;
+ case SWT.Arm: toString += new ArmEvent (event).toString (); break;
+ case SWT.Traverse: toString += new TraverseEvent (event).toString (); break;
+ case SWT.HardKeyDown:
+ case SWT.HardKeyUp:
+ case SWT.DragDetect:
+ case SWT.MenuDetect:
+ default: toString += event.toString ();
+ }
+ eventConsole.append (toString);
+ eventConsole.append ("\n");
+ }
+ }
+
+ /**
* Recreates the "Example" widgets.
*/
void recreateExampleWidgets () {

Back to the top