diff options
| author | Mickael Istria | 2014-01-31 14:57:18 +0000 |
|---|---|---|
| committer | Mickael Istria | 2014-02-03 15:39:39 +0000 |
| commit | 74d44a88c3728e9043401087dc242cb36ed4b116 (patch) | |
| tree | fa3aa2c299cf4000e99276a85b856809629b65a1 | |
| parent | 41d52d71f5307948424659379402a72effea5f19 (diff) | |
| download | org.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
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 { |
