Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMickael Istria2014-01-31 14:57:18 +0000
committerMickael Istria2014-02-03 15:39:39 +0000
commit74d44a88c3728e9043401087dc242cb36ed4b116 (patch)
treefa3aa2c299cf4000e99276a85b856809629b65a1
parent41d52d71f5307948424659379402a72effea5f19 (diff)
downloadorg.eclipse.swtbot-74d44a88c3728e9043401087dc242cb36ed4b116.tar.gz
org.eclipse.swtbot-74d44a88c3728e9043401087dc242cb36ed4b116.tar.xz
org.eclipse.swtbot-74d44a88c3728e9043401087dc242cb36ed4b116.zip
[427096] Added some generator rules
* Shortcuts * StyledText (Text Editors) * ToolItem PUSH and * Put some code responsible for locating widget in WidgetUtils * Introduce a getWidget() method on simple rules Signed-off-by: Mickael Istria <mistria@redhat.com> Change-Id: Ia9694fa38f2cd9a37e45f05b3e8fa6fb1d6a5ebe
-rw-r--r--org.eclipse.swtbot.generator.test/src/org/eclipse/swtbot/generator/test/RecordStyledTextModifiedTest.java46
-rw-r--r--org.eclipse.swtbot.generator.test/src/org/eclipse/swtbot/generator/test/RecordToolbarButtonTest.java75
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/GenerationSimpleRule.java25
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/WidgetUtils.java74
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/SWTBotGeneratorRules.java9
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/complex/ModifyComboComplexRule.java17
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/complex/ModifyStyledTextComplexRule.java62
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/complex/ModifyTextComplexRule.java28
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/AbstractTreeGenerationRule.java10
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/CComboSelectionRule.java22
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/CheckboxClickedRule.java9
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ComboSelectionRule.java18
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ComboTextModifyRule.java13
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ContextMenuRule.java28
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/DoubleClickTreeItemRule.java2
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ExpandTreeItemRule.java2
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ModifyStyledTextRule.java64
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ModifyTextRule.java32
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/PressShortCutRule.java94
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/PushButtonClickedRule.java9
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/RadioButtonClickedRule.java9
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/SelectListItemRule.java18
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/SelectTreeItemRule.java4
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ShellMenuClickedRule.java18
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/SingleListSelectionRule.java24
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ToolBarDropDownRule.java13
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ToolBarItemClickedRule.java78
-rw-r--r--org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/ui/StartupRecorder.java1
28 files changed, 680 insertions, 124 deletions
diff --git a/org.eclipse.swtbot.generator.test/src/org/eclipse/swtbot/generator/test/RecordStyledTextModifiedTest.java b/org.eclipse.swtbot.generator.test/src/org/eclipse/swtbot/generator/test/RecordStyledTextModifiedTest.java
new file mode 100644
index 00000000..7a200d67
--- /dev/null
+++ b/org.eclipse.swtbot.generator.test/src/org/eclipse/swtbot/generator/test/RecordStyledTextModifiedTest.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Red Hat Inc..
+ * 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:
+ * Mickael Istria (Red Hat Inc.) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swtbot.generator.test;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.widgets.Composite;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class RecordStyledTextModifiedTest extends AbstractGeneratorTest {
+
+ @Override
+ protected void contributeToDialog(Composite container) {
+ new StyledText(container, SWT.NONE);
+ }
+
+ @Test
+ public void testModifySyledText() {
+ this.bot.styledText().setText("kikoo"); //$NON-NLS-1$
+ flushEvents();
+ Assert.assertEquals(
+ "bot.styledText().setText(\"kikoo\");", //$NON-NLS-1$
+ recorderShellBot().text().getText().trim());
+ }
+
+ @Test
+ public void testModifyStyledText() {
+ this.bot.styledText().setText("kikoo"); //$NON-NLS-1$
+ this.bot.styledText().setText("kikoolol"); //$NON-NLS-1$
+ // Those 2 successive events should be merged
+ flushEvents();
+ Assert.assertEquals(
+ "bot.styledText().setText(\"kikoolol\");", //$NON-NLS-1$
+ recorderShellBot().text().getText().trim());
+ }
+
+}
diff --git a/org.eclipse.swtbot.generator.test/src/org/eclipse/swtbot/generator/test/RecordToolbarButtonTest.java b/org.eclipse.swtbot.generator.test/src/org/eclipse/swtbot/generator/test/RecordToolbarButtonTest.java
new file mode 100644
index 00000000..79dd01d2
--- /dev/null
+++ b/org.eclipse.swtbot.generator.test/src/org/eclipse/swtbot/generator/test/RecordToolbarButtonTest.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2013 Red Hat Inc..
+ * 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:
+ * Mickael Istria (Red Hat Inc.) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swtbot.generator.test;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class RecordToolbarButtonTest extends AbstractGeneratorTest {
+
+ private Image image;
+
+ @Override
+ protected void contributeToDialog(Composite container) {
+ ToolBar toolbar = new ToolBar(container, SWT.NONE);
+ ToolItem item = new ToolItem(toolbar, SWT.PUSH);
+ item.setText("button1"); //$NON-NLS-1$
+ item.setToolTipText("button1.tooltip"); //$NON-NLS-1$
+ ToolItem item2 = new ToolItem(toolbar, SWT.PUSH);
+ this.image = new Image(container.getDisplay(), new Rectangle(0, 0, 16, 16));
+ item2.setImage(this.image);
+ item2.setText("button2"); //$NON-NLS-1$
+ item2.setToolTipText("button2.tooltip"); //$NON-NLS-1$
+ ToolItem item3 = new ToolItem(toolbar, SWT.PUSH);
+ item3.setImage(this.image);
+ item3.setToolTipText("button3.tooltip"); //$NON-NLS-1$
+ }
+
+ @Test
+ public void testClickToolbar() {
+ this.bot.toolbarButton("button1").click(); //$NON-NLS-1$
+ flushEvents();
+ Assert.assertEquals(
+ "bot.toolbarButton(\"button1\").click();", //$NON-NLS-1$
+ recorderShellBot().text().getText().trim());
+ }
+
+ @Test
+ public void testClickToolbarWithImage() {
+ this.bot.toolbarButton("button2").click(); //$NON-NLS-1$
+ flushEvents();
+ Assert.assertEquals(
+ "bot.toolbarButton(\"button2\").click();", //$NON-NLS-1$
+ recorderShellBot().text().getText().trim());
+ }
+
+ @Test
+ public void testClickToolbarWithImageAndNoText() {
+ this.bot.toolbarButtonWithTooltip("button3.tooltip").click(); //$NON-NLS-1$
+ flushEvents();
+ Assert.assertEquals(
+ "bot.toolbarButtonWithTooltip(\"button3.tooltip\").click();", //$NON-NLS-1$
+ recorderShellBot().text().getText().trim());
+ }
+
+ @Override
+ public void tearDown() {
+ super.tearDown();
+ this.image.dispose();
+ }
+
+}
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/GenerationSimpleRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/GenerationSimpleRule.java
index dd42a8d1..e4175ff6 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/GenerationSimpleRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/GenerationSimpleRule.java
@@ -12,14 +12,12 @@
package org.eclipse.swtbot.generator.framework;
import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Widget;
/**
* This class represents very basic simple rule which is being matched to one event
*
*/
public abstract class GenerationSimpleRule extends GenerationRule{
-
- private String shellTitle;
- private String viewTitle;
/**
* Checks whether event applies to this rule
@@ -34,20 +32,11 @@ public abstract class GenerationSimpleRule extends GenerationRule{
*/
public abstract void initializeForEvent(Event event);
- public String getShellTitle() {
- return shellTitle;
- }
-
- public void setShellTitle(String shellTitle) {
- this.shellTitle = shellTitle;
- }
-
- public String getViewTitle() {
- return viewTitle;
- }
+ /**
+ * @return the widget which triggered the event for this rule
+ * Widget may be disposed.
+ * Only applies if appliesTo() == true and after initializeForEvent
+ */
+ public abstract Widget getWidget();
- public void setViewTitle(String viewTitle) {
- this.viewTitle = viewTitle;
- }
-
}
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/WidgetUtils.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/WidgetUtils.java
index e937e77b..444b960c 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/WidgetUtils.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/WidgetUtils.java
@@ -11,16 +11,21 @@
*******************************************************************************/
package org.eclipse.swtbot.generator.framework;
+import java.util.Arrays;
+
+import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Widget;
public class WidgetUtils {
/**
- *
+ *
* @param control which index should be found
* @return index of control
*/
@@ -45,9 +50,9 @@ public class WidgetUtils {
throw new RuntimeException("Could not determine index for widget " + control);
}
-
+
/**
- *
+ *
* @param control which group should be found
* @return group text or null if group was not found
*/
@@ -62,9 +67,9 @@ public class WidgetUtils {
return null;
}
-
+
/**
- *
+ *
* @param widget which parent shell should be found
* @return shell which contains widget or null
*/
@@ -80,7 +85,7 @@ public class WidgetUtils {
}
/**
- *
+ *
* @param widget widget which label should be found
* @return label text or null if no label was found
*/
@@ -93,7 +98,7 @@ public class WidgetUtils {
}
return null;
}
-
+
/**
* Clean text
* @param text text to clean
@@ -102,10 +107,61 @@ public class WidgetUtils {
public static String cleanText(String text) {
if(text != null){
return text.replaceAll("&", "").split("\t")[0];
- }
+ }
return null;
}
-
+ private static Control getPreviousControl(Control control) {
+ int i = Arrays.asList(control.getParent().getChildren()).indexOf(control);
+ if (i == 0) {
+ return null;
+ }
+ return control.getParent().getChildren()[i - 1];
+ }
+
+ public static String widgetLocator(Widget widget) {
+ if (widget instanceof Text) {
+ return widgetLocator((Text)widget);
+ } else if (widget instanceof StyledText) {
+ return widgetLocator((StyledText)widget);
+ }
+ return "Widget not supported: " + widget.getClass().getSimpleName(); //$NON-NLS-1$
+ }
+
+ public static String widgetLocator(Text text) {
+ StringBuilder res = new StringBuilder("bot."); //$NON-NLS-1$
+ Control previous = getPreviousControl(text);
+ if (previous instanceof Label && !((Label)previous).getText().isEmpty()) {
+ res.append("textWithLabel(\""); //$NON-NLS-1$
+ res.append(((Label)previous).getText());
+ res.append("\")"); //$NON-NLS-1$
+ } else {
+ res.append("text("); //$NON-NLS-1$
+ int index = getIndex(text);
+ if (index != 0) {
+ res.append(index);
+ }
+ res.append(")"); //$NON-NLS-1$
+ }
+ return res.toString();
+ }
+
+ public static String widgetLocator(StyledText text) {
+ StringBuilder res = new StringBuilder("bot."); //$NON-NLS-1$
+ Control previous = getPreviousControl(text);
+ if (previous instanceof Label && !((Label)previous).getText().isEmpty()) {
+ res.append("styledTextWithLabel(\""); //$NON-NLS-1$
+ res.append(((Label)previous).getText());
+ res.append("\")"); //$NON-NLS-1$
+ } else {
+ res.append("styledText("); //$NON-NLS-1$
+ int index = getIndex(text);
+ if (index != 0) {
+ res.append(index);
+ }
+ res.append(")"); //$NON-NLS-1$
+ }
+ return res.toString();
+ }
} \ No newline at end of file
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/SWTBotGeneratorRules.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/SWTBotGeneratorRules.java
index 9f1803bc..8d6df2a8 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/SWTBotGeneratorRules.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/SWTBotGeneratorRules.java
@@ -20,6 +20,7 @@ import org.eclipse.swtbot.generator.framework.GenerationSimpleRule;
import org.eclipse.swtbot.generator.framework.Generator;
import org.eclipse.swtbot.generator.framework.rules.annotation.TestAnnotationRule;
import org.eclipse.swtbot.generator.framework.rules.complex.ModifyComboComplexRule;
+import org.eclipse.swtbot.generator.framework.rules.complex.ModifyStyledTextComplexRule;
import org.eclipse.swtbot.generator.framework.rules.complex.ModifyTextComplexRule;
import org.eclipse.swtbot.generator.framework.rules.complex.ToolBarMenuComplexRule;
import org.eclipse.swtbot.generator.framework.rules.simple.CComboSelectionRule;
@@ -29,13 +30,16 @@ import org.eclipse.swtbot.generator.framework.rules.simple.ComboTextModifyRule;
import org.eclipse.swtbot.generator.framework.rules.simple.ContextMenuRule;
import org.eclipse.swtbot.generator.framework.rules.simple.DoubleClickTreeItemRule;
import org.eclipse.swtbot.generator.framework.rules.simple.ExpandTreeItemRule;
+import org.eclipse.swtbot.generator.framework.rules.simple.ModifyStyledTextRule;
import org.eclipse.swtbot.generator.framework.rules.simple.ModifyTextRule;
+import org.eclipse.swtbot.generator.framework.rules.simple.PressShortCutRule;
import org.eclipse.swtbot.generator.framework.rules.simple.PushButtonClickedRule;
import org.eclipse.swtbot.generator.framework.rules.simple.RadioButtonClickedRule;
import org.eclipse.swtbot.generator.framework.rules.simple.SelectListItemRule;
import org.eclipse.swtbot.generator.framework.rules.simple.SelectTreeItemRule;
import org.eclipse.swtbot.generator.framework.rules.simple.ShellMenuClickedRule;
import org.eclipse.swtbot.generator.framework.rules.simple.ToolBarDropDownRule;
+import org.eclipse.swtbot.generator.framework.rules.simple.ToolBarItemClickedRule;
public class SWTBotGeneratorRules implements Generator {
@@ -52,11 +56,15 @@ public class SWTBotGeneratorRules implements Generator {
res.add(new ShellMenuClickedRule());
res.add(new SelectTreeItemRule());
res.add(new ModifyTextRule());
+ res.add(new ModifyStyledTextRule());
res.add(new ComboTextModifyRule());
res.add(new ContextMenuRule());
res.add(new ToolBarDropDownRule());
+ res.add(new ToolBarItemClickedRule());
res.add(new SelectListItemRule());
+ res.add(new PressShortCutRule());
+
return res;
}
@@ -69,6 +77,7 @@ public class SWTBotGeneratorRules implements Generator {
List<GenerationComplexRule> cres = new ArrayList<GenerationComplexRule>();
cres.add(new ToolBarMenuComplexRule());
cres.add(new ModifyTextComplexRule());
+ cres.add(new ModifyStyledTextComplexRule());
cres.add(new ModifyComboComplexRule());
return cres;
}
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/complex/ModifyComboComplexRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/complex/ModifyComboComplexRule.java
index 6b24f6ba..500a3ec2 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/complex/ModifyComboComplexRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/complex/ModifyComboComplexRule.java
@@ -14,28 +14,29 @@ import java.util.List;
import org.eclipse.swtbot.generator.framework.GenerationComplexRule;
import org.eclipse.swtbot.generator.framework.GenerationSimpleRule;
+import org.eclipse.swtbot.generator.framework.rules.simple.ComboTextModifyRule;
import org.eclipse.swtbot.generator.framework.rules.simple.ModifyTextRule;
public class ModifyComboComplexRule extends GenerationComplexRule{
-
+
private int textIndex;
@Override
public boolean appliesToPartially(GenerationSimpleRule rule, int i) {
- if(i==0 && rule instanceof ModifyTextRule){ //first event, so we will store some identifier of text
- textIndex = ((ModifyTextRule)rule).getTextIndex();
+ if(i==0 && rule instanceof ComboTextModifyRule){ //first event, so we will store some identifier of text
+ this.textIndex = ((ComboTextModifyRule)rule).getTextIndex();
}
- //check whether ModifyTextRule happened on the same text as the first one
+ //check whether ComboTextModifyRule happened on the same text as the first one
//if not then it should be processed by another ModifyTextComplexRule
- return rule instanceof ModifyTextRule && ((ModifyTextRule)rule).getTextIndex() == textIndex;
+ return rule instanceof ComboTextModifyRule && ((ComboTextModifyRule)rule).getTextIndex() == textIndex;
}
@Override
public boolean appliesTo(List<GenerationSimpleRule> rules) {
for(GenerationSimpleRule r: rules){
- if(!(r instanceof ModifyTextRule)){
+ if (!(r instanceof ComboTextModifyRule)) {
return false;
- } else if(((ModifyTextRule)r).getTextIndex() != textIndex){
+ } else if (((ComboTextModifyRule)r).getTextIndex() != this.textIndex){
return false;
}
}
@@ -44,7 +45,7 @@ public class ModifyComboComplexRule extends GenerationComplexRule{
@Override
public List<String> getActions() {
- return ((ModifyTextRule)getInitializationRules().get(getInitializationRules().size()-1)).getActions();
+ return ((ComboTextModifyRule)getInitializationRules().get(getInitializationRules().size()-1)).getActions();
}
@Override
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/complex/ModifyStyledTextComplexRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/complex/ModifyStyledTextComplexRule.java
new file mode 100644
index 00000000..cb05679f
--- /dev/null
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/complex/ModifyStyledTextComplexRule.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Red Hat Inc..
+ * 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:
+ * Mickael Istria (Red Hat) - copied and adapted from ModifyTextComplexRule
+ *******************************************************************************/
+package org.eclipse.swtbot.generator.framework.rules.complex;
+
+import java.util.List;
+
+import org.eclipse.swt.widgets.Widget;
+import org.eclipse.swtbot.generator.framework.GenerationComplexRule;
+import org.eclipse.swtbot.generator.framework.GenerationSimpleRule;
+import org.eclipse.swtbot.generator.framework.rules.simple.ModifyStyledTextRule;
+
+public class ModifyStyledTextComplexRule extends GenerationComplexRule {
+
+
+ private Widget widget;
+
+ @Override
+ public boolean appliesToPartially(GenerationSimpleRule rule, int i) {
+ if (! (rule instanceof ModifyStyledTextRule)) {
+ return false;
+ }
+ if (i == 0) {
+ this.widget = rule.getWidget();
+ }
+ return this.widget.equals(rule.getWidget());
+ }
+
+ @Override
+ public boolean appliesTo(List<GenerationSimpleRule> rules) {
+ Widget widget = null;
+ for (GenerationSimpleRule rule : rules) {
+ if (! (rule instanceof ModifyStyledTextRule)) {
+ return false;
+ }
+ if (widget == null) {
+ widget = rule.getWidget();
+ } else if (!this.widget.equals(rule.getWidget())) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public List<String> getActions() {
+ return getInitializationRules().get(getInitializationRules().size()-1).getActions();
+ }
+
+ @Override
+ public List<String> getImports() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/complex/ModifyTextComplexRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/complex/ModifyTextComplexRule.java
index a3a62946..39700d61 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/complex/ModifyTextComplexRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/complex/ModifyTextComplexRule.java
@@ -12,30 +12,36 @@ package org.eclipse.swtbot.generator.framework.rules.complex;
import java.util.List;
+import org.eclipse.swt.widgets.Widget;
import org.eclipse.swtbot.generator.framework.GenerationComplexRule;
import org.eclipse.swtbot.generator.framework.GenerationSimpleRule;
-import org.eclipse.swtbot.generator.framework.rules.simple.ComboTextModifyRule;
+import org.eclipse.swtbot.generator.framework.rules.simple.ModifyTextRule;
public class ModifyTextComplexRule extends GenerationComplexRule {
- private int textIndex;
+ private Widget widget;
@Override
public boolean appliesToPartially(GenerationSimpleRule rule, int i) {
- if(i==0 && rule instanceof ComboTextModifyRule){ //first event, so we will store some identifier of text
- this.textIndex = ((ComboTextModifyRule)rule).getTextIndex();
+ if (! (rule instanceof ModifyTextRule)) {
+ return false;
}
- //check whether ComboTextModifyRule happened on the same text as the first one
- //if not then it should be processed by another ModifyTextComplexRule
- return rule instanceof ComboTextModifyRule && ((ComboTextModifyRule)rule).getTextIndex() == textIndex;
+ if (i == 0) {
+ this.widget = rule.getWidget();
+ }
+ return this.widget.equals(rule.getWidget());
}
@Override
public boolean appliesTo(List<GenerationSimpleRule> rules) {
- for(GenerationSimpleRule r: rules){
- if (!(r instanceof ComboTextModifyRule)) {
+ Widget widget = null;
+ for (GenerationSimpleRule rule : rules) {
+ if (! (rule instanceof ModifyTextRule)) {
return false;
- } else if (((ComboTextModifyRule)r).getTextIndex() != this.textIndex){
+ }
+ if (widget == null) {
+ widget = rule.getWidget();
+ } else if (!this.widget.equals(rule.getWidget())) {
return false;
}
}
@@ -44,7 +50,7 @@ public class ModifyTextComplexRule extends GenerationComplexRule {
@Override
public List<String> getActions() {
- return ((ComboTextModifyRule)getInitializationRules().get(getInitializationRules().size()-1)).getActions();
+ return getInitializationRules().get(getInitializationRules().size()-1).getActions();
}
@Override
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/AbstractTreeGenerationRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/AbstractTreeGenerationRule.java
index 9b9093eb..8ab3386a 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/AbstractTreeGenerationRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/AbstractTreeGenerationRule.java
@@ -21,9 +21,10 @@ import org.eclipse.swtbot.generator.framework.GenerationSimpleRule;
import org.eclipse.swtbot.generator.framework.WidgetUtils;
public abstract class AbstractTreeGenerationRule extends GenerationSimpleRule {
-
+
private int index;
private List<String> path;
+ private Tree tree;
/**
* Subclasses should call super.appliesTo first, and then
@@ -38,7 +39,7 @@ public abstract class AbstractTreeGenerationRule extends GenerationSimpleRule {
@Override
public void initializeForEvent(Event event) {
- Tree tree = (Tree)event.widget;
+ this.tree = (Tree)event.widget;
path = new ArrayList<String>();
index = WidgetUtils.getIndex(tree);
TreeItem currentItem = (TreeItem)event.item;
@@ -71,4 +72,9 @@ public abstract class AbstractTreeGenerationRule extends GenerationSimpleRule {
}
return res.toString();
}
+
+ @Override
+ public Tree getWidget() {
+ return this.tree;
+ }
} \ No newline at end of file
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/CComboSelectionRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/CComboSelectionRule.java
index aba34965..9010fe5b 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/CComboSelectionRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/CComboSelectionRule.java
@@ -20,10 +20,11 @@ import org.eclipse.swtbot.generator.framework.GenerationSimpleRule;
import org.eclipse.swtbot.generator.framework.WidgetUtils;
public class CComboSelectionRule extends GenerationSimpleRule {
-
+
private String newSelection;
private int newSelectionIndex;
private int index;
+ private CCombo combo;
@Override
public boolean appliesTo(Event event) {
@@ -32,23 +33,23 @@ public class CComboSelectionRule extends GenerationSimpleRule {
@Override
public void initializeForEvent(Event event) {
- CCombo combo = (CCombo)event.widget;
- this.newSelection = combo.getText();
- this.newSelectionIndex = combo.getSelectionIndex();
- index = WidgetUtils.getIndex(combo);
+ this.combo = (CCombo)event.widget;
+ this.newSelection = this.combo.getText();
+ this.newSelectionIndex = this.combo.getSelectionIndex();
+ index = WidgetUtils.getIndex(this.combo);
}
@Override
public List<String> getActions() {
List<String> actions = new ArrayList<String>();
StringBuilder res = new StringBuilder();
-
+
if (index != 0) {
res.append("bot.ccomboBox(" + index + ")");
} else {
res.append("bot.ccomboBox()");
}
-
+
res.append(".select(");
if (this.newSelection != null) {
res.append('"');
@@ -58,7 +59,7 @@ public class CComboSelectionRule extends GenerationSimpleRule {
res.append(this.newSelectionIndex);
res.append(")");
}
-
+
actions.add(res.toString());
return actions;
}
@@ -69,4 +70,9 @@ public class CComboSelectionRule extends GenerationSimpleRule {
return null;
}
+ @Override
+ public CCombo getWidget() {
+ return this.combo;
+ }
+
} \ No newline at end of file
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/CheckboxClickedRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/CheckboxClickedRule.java
index bb29ff98..a2217c83 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/CheckboxClickedRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/CheckboxClickedRule.java
@@ -23,6 +23,7 @@ public class CheckboxClickedRule extends GenerationSimpleRule {
private String buttonText;
private int index;
+ private Button button;
@Override
public boolean appliesTo(Event event) {
@@ -33,7 +34,8 @@ public class CheckboxClickedRule extends GenerationSimpleRule {
@Override
public void initializeForEvent(Event event) {
- this.buttonText = ((Button)event.widget).getText();
+ this.button = (Button)event.widget;
+ this.buttonText = this.button.getText();
if (this.buttonText != null) {
this.buttonText = this.buttonText.replace("&", "");
} else {
@@ -63,4 +65,9 @@ public class CheckboxClickedRule extends GenerationSimpleRule {
return null;
}
+ @Override
+ public Button getWidget() {
+ return this.button;
+ }
+
} \ No newline at end of file
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ComboSelectionRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ComboSelectionRule.java
index bb10bd36..001a40df 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ComboSelectionRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ComboSelectionRule.java
@@ -24,6 +24,7 @@ public class ComboSelectionRule extends GenerationSimpleRule {
private String newSelection;
private int newSelectionIndex;
private int index;
+ private Combo combo;
@Override
public boolean appliesTo(Event event) {
@@ -32,10 +33,10 @@ public class ComboSelectionRule extends GenerationSimpleRule {
@Override
public void initializeForEvent(Event event) {
- Combo combo = (Combo)event.widget;
- this.newSelection = combo.getText();
- this.newSelectionIndex = combo.getSelectionIndex();
- this.index = WidgetUtils.getIndex(combo);
+ this.combo = (Combo)event.widget;
+ this.newSelection = this.combo.getText();
+ this.newSelectionIndex = this.combo.getSelectionIndex();
+ this.index = WidgetUtils.getIndex(this.combo);
}
@Override
@@ -47,7 +48,7 @@ public class ComboSelectionRule extends GenerationSimpleRule {
} else {
res.append("bot.comboBox()");
}
-
+
res.append(".select(");
if (this.newSelection != null) {
res.append('"');
@@ -66,7 +67,10 @@ public class ComboSelectionRule extends GenerationSimpleRule {
// TODO Auto-generated method stub
return null;
}
-
-
+
+ @Override
+ public Combo getWidget() {
+ return this.combo;
+ }
} \ No newline at end of file
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ComboTextModifyRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ComboTextModifyRule.java
index b276492f..4d80a863 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ComboTextModifyRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ComboTextModifyRule.java
@@ -23,6 +23,7 @@ public class ComboTextModifyRule extends GenerationSimpleRule {
private int textIndex;
private String newValue;
+ private Combo combo;
@Override
public boolean appliesTo(Event event) {
@@ -32,8 +33,9 @@ public class ComboTextModifyRule extends GenerationSimpleRule {
@Override
public void initializeForEvent(Event event) {
- this.textIndex = WidgetUtils.getIndex((Combo)event.widget);
- this.newValue = ((Combo)event.widget).getText();
+ this.combo = (Combo) event.widget;
+ this.textIndex = WidgetUtils.getIndex(this.combo);
+ this.newValue = this.combo.getText();
}
public int getTextIndex() {
@@ -54,7 +56,7 @@ public class ComboTextModifyRule extends GenerationSimpleRule {
}
res.append(").setText(\"" + this.newValue + "\")");
actions.add(res.toString());
-
+
return actions;
}
@@ -64,6 +66,9 @@ public class ComboTextModifyRule extends GenerationSimpleRule {
return null;
}
-
+ @Override
+ public Combo getWidget() {
+ return this.combo;
+ }
} \ No newline at end of file
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ContextMenuRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ContextMenuRule.java
index 0e8ea964..61b72f8b 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ContextMenuRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ContextMenuRule.java
@@ -1,3 +1,13 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Red Hat Inc..
+ * 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:
+ * Rastislav Wagner (Red Hat) - initial API and implementation
+ *******************************************************************************/
package org.eclipse.swtbot.generator.framework.rules.simple;
import java.util.ArrayList;
@@ -12,9 +22,10 @@ import org.eclipse.swtbot.generator.framework.GenerationSimpleRule;
import org.eclipse.swtbot.generator.framework.WidgetUtils;
public class ContextMenuRule extends GenerationSimpleRule{
-
+
private List<String> path;
private String menu;
+ private MenuItem item;
@Override
public boolean appliesTo(Event event) {
@@ -33,10 +44,10 @@ public class ContextMenuRule extends GenerationSimpleRule{
@Override
public void initializeForEvent(Event event) {
- MenuItem item = (MenuItem) event.widget;
- menu = WidgetUtils.cleanText(item.getText());
+ this.item = (MenuItem) event.widget;
+ menu = WidgetUtils.cleanText(this.item.getText());
path = new ArrayList<String>();
- MenuItem currentItem = item;
+ MenuItem currentItem = this.item;
Menu parent = null;
while (currentItem != null && (parent = currentItem.getParent()) != null) {
currentItem = parent.getParentItem();
@@ -46,7 +57,7 @@ public class ContextMenuRule extends GenerationSimpleRule{
}
Collections.reverse(path);
}
-
+
public List<String> getPath() {
return path;
}
@@ -74,7 +85,10 @@ public class ContextMenuRule extends GenerationSimpleRule{
// TODO Auto-generated method stub
return null;
}
-
-
+
+ @Override
+ public MenuItem getWidget() {
+ return this.item;
+ }
}
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/DoubleClickTreeItemRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/DoubleClickTreeItemRule.java
index b5cf1f28..5af6c071 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/DoubleClickTreeItemRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/DoubleClickTreeItemRule.java
@@ -31,7 +31,7 @@ public class DoubleClickTreeItemRule extends AbstractTreeGenerationRule {
code.append(".doubleClick()");
actions.add(code.toString());
return actions;
-
+
}
@Override
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ExpandTreeItemRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ExpandTreeItemRule.java
index b4c36672..bdcadfa6 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ExpandTreeItemRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ExpandTreeItemRule.java
@@ -31,7 +31,7 @@ public class ExpandTreeItemRule extends AbstractTreeGenerationRule {
code.append(".expand()");
actions.add(code.toString());
return actions;
-
+
}
@Override
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ModifyStyledTextRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ModifyStyledTextRule.java
new file mode 100644
index 00000000..2c3da9c4
--- /dev/null
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ModifyStyledTextRule.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Red Hat Inc..
+ * 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:
+ * Mickael Istria (Red Hat) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swtbot.generator.framework.rules.simple;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swtbot.generator.framework.GenerationSimpleRule;
+import org.eclipse.swtbot.generator.framework.WidgetUtils;
+
+public class ModifyStyledTextRule extends GenerationSimpleRule {
+
+ private String newValue;
+ private StyledText text;
+ private String widgetLocator;
+
+ @Override
+ public boolean appliesTo(Event event) {
+ if (event.widget instanceof StyledText && event.type == SWT.Modify) {
+ StyledText text = (StyledText)event.widget;
+ return !text.getText().isEmpty();
+ }
+ return false;
+ }
+
+ @Override
+ public void initializeForEvent(Event event) {
+ this.text = (StyledText)event.widget;
+ this.widgetLocator = WidgetUtils.widgetLocator(this.text);
+ this.newValue = this.text.getText();
+ }
+
+ @Override
+ public List<String> getActions() {
+ List<String> actions = new ArrayList<String>();
+ StringBuilder res = new StringBuilder(this.widgetLocator);
+ res.append(".setText(\"" + this.newValue + "\")"); //$NON-NLS-1$ //$NON-NLS-2$
+ actions.add(res.toString());
+ return actions;
+ }
+
+ @Override
+ public List<String> getImports() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public StyledText getWidget() {
+ return this.text;
+ }
+
+} \ No newline at end of file
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ModifyTextRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ModifyTextRule.java
index b3e8ebe8..49243a25 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ModifyTextRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ModifyTextRule.java
@@ -16,13 +16,15 @@ import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Widget;
import org.eclipse.swtbot.generator.framework.GenerationSimpleRule;
import org.eclipse.swtbot.generator.framework.WidgetUtils;
public class ModifyTextRule extends GenerationSimpleRule {
- private int textIndex;
private String newValue;
+ private Text text;
+ private String locator;
@Override
public boolean appliesTo(Event event) {
@@ -33,27 +35,16 @@ public class ModifyTextRule extends GenerationSimpleRule {
@Override
public void initializeForEvent(Event event) {
- this.textIndex = WidgetUtils.getIndex((Text)event.widget);
- this.newValue = ((Text)event.widget).getText();
+ this.text = (Text) event.widget;
+ this.locator = WidgetUtils.widgetLocator(this.text);
+ this.newValue = this.text.getText();
}
- public int getTextIndex() {
- return textIndex;
- }
-
- public void setTextIndex(int textIndex) {
- this.textIndex = textIndex;
- }
-
@Override
public List<String> getActions() {
List<String> actions = new ArrayList<String>();
- StringBuilder res = new StringBuilder();
- res.append("bot.text(");
- if (textIndex != 0) {
- res.append(textIndex);
- }
- res.append(").setText(\"" + this.newValue + "\")");
+ StringBuilder res = new StringBuilder(this.locator);
+ res.append(".setText(\"" + this.newValue + "\")"); //$NON-NLS-1$ //$NON-NLS-2$
actions.add(res.toString());
return actions;
}
@@ -63,7 +54,10 @@ public class ModifyTextRule extends GenerationSimpleRule {
// TODO Auto-generated method stub
return null;
}
-
-
+
+ @Override
+ public Widget getWidget() {
+ return this.text;
+ }
} \ No newline at end of file
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/PressShortCutRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/PressShortCutRule.java
new file mode 100644
index 00000000..974bb574
--- /dev/null
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/PressShortCutRule.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Red Hat Inc..
+ * 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:
+ * Mickael Istria (Red Hat) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swtbot.generator.framework.rules.simple;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Widget;
+import org.eclipse.swtbot.generator.framework.GenerationSimpleRule;
+import org.eclipse.swtbot.generator.framework.WidgetUtils;
+
+public class PressShortCutRule extends GenerationSimpleRule {
+
+ String widgetLocator;
+ Widget widget;
+ private char keyChar;
+ private int modifier;
+
+ @Override
+ public boolean appliesTo(Event event) {
+ return event.type == SWT.KeyDown && event.stateMask != 0 && !(event.stateMask == SWT.SHIFT && Character.isUpperCase(event.character));
+ }
+
+ @Override
+ public void initializeForEvent(Event event) {
+ this.widget = event.widget;
+ this.keyChar = event.character;
+ this.modifier = event.stateMask;
+ this.widgetLocator = WidgetUtils.widgetLocator(this.widget);
+ }
+
+ @Override
+ public List<String> getActions() {
+ List<String> res = new ArrayList<String>();
+ StringBuilder line = new StringBuilder();
+ line.append(this.widgetLocator);
+ line.append(".pressShortcut("); //$NON-NLS-1$
+ line.append(computeString(this.modifier));
+ if (this.keyChar != '\0') {
+ line.append(", "); //$NON-NLS-1$
+ line.append('\'');
+ line.append(this.keyChar);
+ line.append('\'');
+ }
+ line.append(")"); //$NON-NLS-1$
+ res.add(line.toString());
+ return res;
+ }
+
+ private static String computeString(int modifier) {
+ if (modifier == 0) {
+ return "SWT.NONE"; //$NON-NLS-1$
+ }
+ StringBuilder res = new StringBuilder();
+ if ((modifier & SWT.CTRL) != 0) {
+ res.append("SWT.CTRL"); //$NON-NLS-1$
+ }
+ if ((modifier & SWT.ALT) != 0) {
+ if (res.length() > 0) {
+ res.append(" | "); //$NON-NLS-1$
+ }
+ res.append("SWT.ALT"); //$NON-NLS-1$
+ }
+ if ((modifier & SWT.SHIFT) != 0) {
+ if (res.length() > 0) {
+ res.append(" | "); //$NON-NLS-1$
+ }
+ res.append("SWT.SHIFT"); //$NON-NLS-1$
+ }
+ return res.toString();
+ }
+
+ @Override
+ public List<String> getImports() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Widget getWidget() {
+ return this.widget;
+ }
+
+} \ No newline at end of file
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/PushButtonClickedRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/PushButtonClickedRule.java
index 141c17e1..d394e086 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/PushButtonClickedRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/PushButtonClickedRule.java
@@ -23,6 +23,7 @@ public class PushButtonClickedRule extends GenerationSimpleRule {
private String buttonText;
private int index;
+ private Button button;
@Override
public boolean appliesTo(Event event) {
@@ -33,7 +34,8 @@ public class PushButtonClickedRule extends GenerationSimpleRule {
@Override
public void initializeForEvent(Event event) {
- this.buttonText = ((Button)event.widget).getText();
+ this.button = (Button)event.widget;
+ this.buttonText = this.button.getText();
if (this.buttonText != null) {
this.buttonText = this.buttonText.replace("&", "");
} else {
@@ -61,4 +63,9 @@ public class PushButtonClickedRule extends GenerationSimpleRule {
return null;
}
+ @Override
+ public Button getWidget() {
+ return this.button;
+ }
+
} \ No newline at end of file
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/RadioButtonClickedRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/RadioButtonClickedRule.java
index 74afda47..fecce7b5 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/RadioButtonClickedRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/RadioButtonClickedRule.java
@@ -23,6 +23,7 @@ public class RadioButtonClickedRule extends GenerationSimpleRule {
private String buttonText;
private int index;
+ private Button button;
@Override
public boolean appliesTo(Event event) {
@@ -33,7 +34,8 @@ public class RadioButtonClickedRule extends GenerationSimpleRule {
@Override
public void initializeForEvent(Event event) {
- this.buttonText = ((Button)event.widget).getText();
+ this.button = (Button)event.widget;
+ this.buttonText = this.button.getText();
if (this.buttonText != null) {
this.buttonText = this.buttonText.replace("&", "");
} else {
@@ -64,4 +66,9 @@ public class RadioButtonClickedRule extends GenerationSimpleRule {
return null;
}
+ @Override
+ public Button getWidget() {
+ return this.button;
+ }
+
} \ No newline at end of file
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/SelectListItemRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/SelectListItemRule.java
index 00b30025..7340e7f4 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/SelectListItemRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/SelectListItemRule.java
@@ -24,6 +24,7 @@ public class SelectListItemRule extends GenerationSimpleRule {
boolean useIndices = false;
private String[] selectedItems;
private int[] selectedIndices;
+ private org.eclipse.swt.widgets.List list;
@Override
public boolean appliesTo(Event event) {
@@ -33,13 +34,13 @@ public class SelectListItemRule extends GenerationSimpleRule {
@Override
public void initializeForEvent(Event event) {
- org.eclipse.swt.widgets.List list = (org.eclipse.swt.widgets.List)event.widget;
- this.index = WidgetUtils.getIndex(list);
- this.selectedIndices = list.getSelectionIndices();
- this.selectedItems = list.getSelection();
- for (String selectedItem : list.getSelection()) {
+ this.list = (org.eclipse.swt.widgets.List)event.widget;
+ this.index = WidgetUtils.getIndex(this.list);
+ this.selectedIndices = this.list.getSelectionIndices();
+ this.selectedItems = this.list.getSelection();
+ for (String selectedItem : this.list.getSelection()) {
int nbOccurrences = 0;
- for (String item : list.getItems()) {
+ for (String item : this.list.getItems()) {
if (item.equals(selectedItem)) {
nbOccurrences++;
}
@@ -92,4 +93,9 @@ public class SelectListItemRule extends GenerationSimpleRule {
return null;
}
+ @Override
+ public org.eclipse.swt.widgets.List getWidget() {
+ return this.list;
+ }
+
} \ No newline at end of file
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/SelectTreeItemRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/SelectTreeItemRule.java
index 5f91ae19..d71fb8c0 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/SelectTreeItemRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/SelectTreeItemRule.java
@@ -13,8 +13,8 @@ package org.eclipse.swtbot.generator.framework.rules.simple;
import java.util.ArrayList;
import java.util.List;
-import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Event;
public class SelectTreeItemRule extends AbstractTreeGenerationRule {
@@ -31,7 +31,7 @@ public class SelectTreeItemRule extends AbstractTreeGenerationRule {
code.append(".select()");
actions.add(code.toString());
return actions;
-
+
}
@Override
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ShellMenuClickedRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ShellMenuClickedRule.java
index 5e687567..44fba3a2 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ShellMenuClickedRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ShellMenuClickedRule.java
@@ -24,6 +24,7 @@ import org.eclipse.swtbot.generator.framework.WidgetUtils;
public class ShellMenuClickedRule extends GenerationSimpleRule {
private List<String> path;
+ private MenuItem item;
@Override
public boolean appliesTo(Event event) {
@@ -42,10 +43,10 @@ public class ShellMenuClickedRule extends GenerationSimpleRule {
@Override
public void initializeForEvent(Event event) {
- MenuItem item = (MenuItem)event.widget;
+ this.item = (MenuItem)event.widget;
path = new ArrayList<String>();
path.add(item.getText());
- MenuItem currentItem = item;
+ MenuItem currentItem = this.item;
Menu parent = null;
while (currentItem != null && (parent = currentItem.getParent()) != null) {
currentItem = parent.getParentItem();
@@ -59,7 +60,7 @@ public class ShellMenuClickedRule extends GenerationSimpleRule {
@Override
public List<String> getActions() {
List<String> actions = new ArrayList<String>();
-
+
StringBuilder code = new StringBuilder();
code.append("bot");
for (String text : path) {
@@ -67,11 +68,11 @@ public class ShellMenuClickedRule extends GenerationSimpleRule {
code.append(WidgetUtils.cleanText(text));
code.append("\")");
}
-
+
code.append(".click()");
actions.add(code.toString());
-
-
+
+
return actions;
}
@@ -81,4 +82,9 @@ public class ShellMenuClickedRule extends GenerationSimpleRule {
return null;
}
+ @Override
+ public MenuItem getWidget() {
+ return this.item;
+ }
+
} \ No newline at end of file
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/SingleListSelectionRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/SingleListSelectionRule.java
index 42a26473..b2ae4e15 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/SingleListSelectionRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/SingleListSelectionRule.java
@@ -23,6 +23,7 @@ public class SingleListSelectionRule extends GenerationSimpleRule {
private String newSelectionText = null;
private int index;
+ private List widget;
@Override
public boolean appliesTo(Event event) {
@@ -32,24 +33,24 @@ public class SingleListSelectionRule extends GenerationSimpleRule {
@Override
public void initializeForEvent(Event event) {
- List list = (List)event.widget;
- if (list.getSelectionCount() > 0){
- this.newSelectionText = list.getSelection()[0];
+ this.widget = (List)event.widget;
+ if (this.widget.getSelectionCount() > 0){
+ this.newSelectionText = this.widget.getSelection()[0];
}
- index = WidgetUtils.getIndex(list);
+ this.index = WidgetUtils.getIndex(this.widget);
}
-
+
@Override
public java.util.List<String> getActions() {
java.util.List<String> actions = new ArrayList<String>();
-
+
StringBuilder res = new StringBuilder();
if (index != 0) {
res.append("bot.list(" + index + ")");
} else {
res.append("bot.list()");
}
-
+
if (this.newSelectionText != null){
res.append(".select(\"");
res.append(this.newSelectionText);
@@ -58,9 +59,9 @@ public class SingleListSelectionRule extends GenerationSimpleRule {
else {
res.append(".unselect()");
}
-
+
actions.add(res.toString());
-
+
return actions;
}
@@ -70,4 +71,9 @@ public class SingleListSelectionRule extends GenerationSimpleRule {
return null;
}
+ @Override
+ public List getWidget() {
+ return this.widget;
+ }
+
}
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ToolBarDropDownRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ToolBarDropDownRule.java
index 6cf56e25..c7aff110 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ToolBarDropDownRule.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ToolBarDropDownRule.java
@@ -19,9 +19,10 @@ import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.swtbot.generator.framework.GenerationSimpleRule;
public class ToolBarDropDownRule extends GenerationSimpleRule{
-
+
private String toolTipText;
-
+ private ToolItem widget;
+
@Override
public boolean appliesTo(Event event) {
@@ -31,7 +32,8 @@ public class ToolBarDropDownRule extends GenerationSimpleRule{
@Override
public void initializeForEvent(Event event) {
- this.toolTipText = ((ToolItem)event.widget).getToolTipText();
+ this.widget = (ToolItem)event.widget;
+ this.toolTipText = this.widget.getToolTipText();
}
public String getToolTipText() {
@@ -55,5 +57,10 @@ public class ToolBarDropDownRule extends GenerationSimpleRule{
return null;
}
+ @Override
+ public ToolItem getWidget() {
+ return this.widget;
+ }
+
}
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ToolBarItemClickedRule.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ToolBarItemClickedRule.java
new file mode 100644
index 00000000..26f4cfe4
--- /dev/null
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/framework/rules/simple/ToolBarItemClickedRule.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Red Hat Inc..
+ * 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:
+ * Rastislav Wagner (Red Hat) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swtbot.generator.framework.rules.simple;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.ToolItem;
+import org.eclipse.swtbot.generator.framework.GenerationSimpleRule;
+
+public class ToolBarItemClickedRule extends GenerationSimpleRule{
+
+ private String toolTipText;
+ private String text;
+ private ToolItem widget;
+
+ @Override
+ public boolean appliesTo(Event event) {
+ if (event.widget instanceof ToolItem && event.type == SWT.Selection) {
+ ToolItem item = (ToolItem)event.widget;
+ int style = item.getStyle();
+ return (style & SWT.DROP_DOWN) == 0 && (style & SWT.PUSH) != 0;
+ }
+ return false;
+ }
+
+ @Override
+ public void initializeForEvent(Event event) {
+ this.widget = (ToolItem)event.widget;
+ this.text = this.widget.getText();
+ this.toolTipText = this.widget.getToolTipText();
+ }
+
+ @Override
+ public List<String> getActions() {
+ List<String> actions = new ArrayList<String>();
+ StringBuilder res = new StringBuilder("bot.");
+ if (this.text != null && this.text.length() > 0) {
+ res.append("toolbarButton(\""); //$NON-NLS-1$
+ res.append(this.text);
+ res.append("\")"); //$NON-NLS-1$
+ } else if (this.toolTipText != null && this.toolTipText.length() > 0) {
+ res.append("toolbarButtonWithTooltip(\""); //$NON-NLS-1$
+ res.append(this.toolTipText);
+ res.append("\")"); //$NON-NLS-1$
+ } else {
+ res.append("toolbarButton("); //$NON-NLS-1$
+ res.append("TODO index");
+ res.append(')');
+ }
+ res.append(".click()"); //$NON-NLS-1%
+ actions.add(res.toString());
+ return actions;
+ }
+
+ @Override
+ public List<String> getImports() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public ToolItem getWidget() {
+ return this.widget;
+ }
+
+}
+
diff --git a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/ui/StartupRecorder.java b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/ui/StartupRecorder.java
index af51ae04..53f3a1be 100644
--- a/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/ui/StartupRecorder.java
+++ b/org.eclipse.swtbot.generator/src/org/eclipse/swtbot/generator/ui/StartupRecorder.java
@@ -36,6 +36,7 @@ public class StartupRecorder implements IStartup {
SWT.Modify,
SWT.MouseDown,
SWT.MouseDoubleClick,
+ SWT.KeyDown
};
private static final class StartRecorderRunnable implements Runnable {

Back to the top