// Check xStartSpinner and xEndSpinner panels aren't visible
assertFalse("X start spinner panel is visible", xStartSpinner.getParent().isVisible());
assertFalse("X end spinner panel is visible", xEndSpinner.getParent().isVisible());
// Edit right side texture
JDialog textureDialog = showTexturePanel(preferences, rightSideTextureComponent, false, attributesDialog, tester);
JList availableTexturesList = (JList)new BasicFinder().find(textureDialog,
new ClassMatcher(JList.class, true));
int textureCount = availableTexturesList.getModel().getSize();
CatalogTexture defaultTexture = (CatalogTexture)availableTexturesList.getSelectedValue();
// Import texture
JDialog textureWizardDialog = showImportTextureWizard(preferences, frame, tester, false);
// Retrieve ImportedFurnitureWizardStepsPanel components
ImportedTextureWizardStepsPanel panel = (ImportedTextureWizardStepsPanel)TestUtilities.findComponent(
textureWizardDialog, ImportedTextureWizardStepsPanel.class);
final JButton imageChoiceOrChangeButton = (JButton)TestUtilities.getField(panel, "imageChoiceOrChangeButton");
final JTextField nameTextField = (JTextField)TestUtilities.getField(panel, "nameTextField");
JComboBox categoryComboBox = (JComboBox)TestUtilities.getField(panel, "categoryComboBox");
JSpinner widthSpinner = (JSpinner)TestUtilities.getField(panel, "widthSpinner");
JSpinner heightSpinner = (JSpinner)TestUtilities.getField(panel, "heightSpinner");
// Check current step is image
tester.waitForIdle();
assertStepShowing(panel, true, false);
WizardPane view = (WizardPane)TestUtilities.findComponent(textureWizardDialog, WizardPane.class);
// Check wizard view next button is disabled
final JButton nextFinishOptionButton = (JButton)TestUtilities.getField(view, "nextFinishOptionButton");
assertFalse("Next button is enabled", nextFinishOptionButton.isEnabled());
// 4. Choose tested image
String imageChoiceOrChangeButtonText = imageChoiceOrChangeButton.getText();
tester.invokeAndWait(new Runnable() {
public void run() {
imageChoiceOrChangeButton.doClick();
}
});
// Wait 200 ms to let time to Java to load the image
Thread.sleep(200);
// Check choice button text changed
assertFalse("Choice button text didn't change",
imageChoiceOrChangeButtonText.equals(imageChoiceOrChangeButton.getText()));
// Click on next button
tester.invokeAndWait(new Runnable() {
public void run() {
nextFinishOptionButton.doClick();
}
});
// Check current step is attributes
assertStepShowing(panel, false, true);
// 5. Check default furniture name is the presentation name proposed by content manager
assertEquals("Wrong default name",
contentManager.getPresentationName(testedImageName.toString(), ContentManager.ContentType.IMAGE),
nameTextField.getText());
// Check name text field has focus
assertSame("Name text field doesn't have focus", nameTextField,
KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner());
// Check default category is user category
String userCategoryName = preferences.getLocalizedString(
ImportedTextureWizardStepsPanel.class, "userCategory");
assertEquals("Wrong default category", userCategoryName,
((TexturesCategory)categoryComboBox.getSelectedItem()).getName());
// Rename texture
final String textureTestName = "#@" + System.currentTimeMillis() + "@#";
tester.invokeAndWait(new Runnable() {
public void run() {
nameTextField.setText(textureTestName);
}
});
// Check next button is enabled again
assertTrue("Next button isn't enabled", nextFinishOptionButton.isEnabled());
// 6. Change width with a value 5 times greater
float width = (Float)widthSpinner.getValue();
float height = (Float)heightSpinner.getValue();
widthSpinner.setValue(width * 5);
// Check height is 5 times greater
float newWidth = (Float)widthSpinner.getValue();
float newHeight = (Float)heightSpinner.getValue();
assertEquals("width", 5 * width, newWidth);
assertEquals("height", 5 * height, newHeight);
tester.invokeAndWait(new Runnable() {
public void run() {
// Click on Finish to hide dialog box in Event Dispatch Thread
nextFinishOptionButton.doClick();
}
});
assertFalse("Import texture wizard still showing", textureWizardDialog.isShowing());
// Check the list of available textures has one more selected modifiable texture
assertEquals("Wrong texture count in list", textureCount + 1, availableTexturesList.getModel().getSize());
assertEquals("No selected texture in list", 1, availableTexturesList.getSelectedValues().length);
CatalogTexture importedTexture = (CatalogTexture)availableTexturesList.getSelectedValue();
assertNotSame("Wrong selected texture in list", defaultTexture, importedTexture);
// Check the attributes of the new texture
assertEquals("Wrong name", textureTestName, importedTexture.getName());
assertEquals("Wrong category", userCategoryName, importedTexture.getCategory().getName());
assertEquals("Wrong width", newWidth, importedTexture.getWidth());
assertEquals("Wrong height", newHeight, importedTexture.getHeight());
assertTrue("New texture isn't modifiable", importedTexture.isModifiable());
// 7. Click on OK in texture dialog box
doClickOnOkInDialog(textureDialog, tester);
// Click on OK in wall dialog box
doClickOnOkInDialog(attributesDialog, tester);
// Check wall attributes are modified accordingly
assertNull("Wrong texture on wall 1 left side", wall1.getLeftSideTexture());
assertNull("Wrong texture on wall 2 left side", wall2.getLeftSideTexture());
assertEquals("Wrong texture on wall 1 right side", textureTestName, wall1.getRightSideTexture().getName());
assertEquals("Wrong texture on wall 2 right side", textureTestName, wall2.getRightSideTexture().getName());
// 8. Edit left side texture of first wall
home.setSelectedItems(Arrays.asList(wall1));
assertEquals("Wrong selected items count in home", 1, home.getSelectedItems().size());
attributesDialog = showWallPanel(preferences, controller, frame, tester);
// Retrieve WallPanel components
wallPanel = (WallPanel)TestUtilities.findComponent(attributesDialog, WallPanel.class);
xStartSpinner = (JSpinner)TestUtilities.getField(wallPanel, "xStartSpinner");
xEndSpinner = (JSpinner)TestUtilities.getField(wallPanel, "xEndSpinner");
TextureChoiceComponent leftSideTextureComponent =
(TextureChoiceComponent)TestUtilities.getField(wallPanel, "leftSideTextureComponent");
// Check xStartSpinner and xEndSpinner panels are visible
assertTrue("X start spinner panel isn't visible", xStartSpinner.getParent().isVisible());
assertTrue("X end spinner panel isn't visible", xEndSpinner.getParent().isVisible());
// Edit left side texture
textureDialog = showTexturePanel(preferences, leftSideTextureComponent, true, attributesDialog, tester);
availableTexturesList = (JList)new BasicFinder().find(textureDialog,
new ClassMatcher(JList.class, true));
textureCount = availableTexturesList.getModel().getSize();
// Select imported texture
availableTexturesList.setSelectedValue(importedTexture, true);
// Modify texture
textureWizardDialog = showImportTextureWizard(preferences, frame, tester, true);
// Retrieve ImportedFurnitureWizardStepsPanel components
panel = (ImportedTextureWizardStepsPanel)TestUtilities.findComponent(
textureWizardDialog, ImportedTextureWizardStepsPanel.class);
widthSpinner = (JSpinner)TestUtilities.getField(panel, "widthSpinner");
final JButton nextFinishOptionButton2 = (JButton)TestUtilities.getField(
TestUtilities.findComponent(textureWizardDialog, WizardPane.class), "nextFinishOptionButton");
tester.invokeAndWait(new Runnable() {
public void run() {
nextFinishOptionButton2.doClick();
}
});
// Change width
widthSpinner.setValue((Float)widthSpinner.getValue() * 2);
newWidth = (Float)widthSpinner.getValue();
tester.invokeAndWait(new Runnable() {
public void run() {
// Click on Finish to hide dialog box in Event Dispatch Thread
nextFinishOptionButton2.doClick();
}
});
tester.waitForIdle();
assertFalse("Import texture wizard still showing", textureWizardDialog.isShowing());
// Check the list of available textures has the same texture count
// and a new selected texture
assertEquals("Wrong texture count in list", textureCount, availableTexturesList.getModel().getSize());
assertEquals("No selected texture in list", 1, availableTexturesList.getSelectedValues().length);
CatalogTexture modifiedTexture = (CatalogTexture)availableTexturesList.getSelectedValue();
assertNotSame("Wrong selected texture in list", importedTexture, modifiedTexture);
// Check the attributes of the new texture
assertEquals("Wrong name", textureTestName, modifiedTexture.getName());
assertEquals("Wrong category", userCategoryName, modifiedTexture.getCategory().getName());
assertEquals("Wrong width", newWidth, modifiedTexture.getWidth());
assertTrue("New texture isn't modifiable", modifiedTexture.isModifiable());
// 9. Click on OK in texture dialog box
doClickOnOkInDialog(textureDialog, tester);
// Click on OK in wall dialog box
doClickOnOkInDialog(attributesDialog, tester);
// Check wall attributes are modified accordingly
assertEquals("Wrong texture on wall 1 left side", newWidth, wall1.getLeftSideTexture().getWidth());
assertNull("Wrong texture on wall 2 left side", wall2.getLeftSideTexture());
assertEquals("Wrong texture on wall 1 right side", newWidth / 2, wall1.getRightSideTexture().getWidth());
assertEquals("Wrong texture on wall 2 right side", newWidth / 2, wall2.getRightSideTexture().getWidth());
// 10. Open wall dialog a last time to delete the modified texture
attributesDialog = showWallPanel(preferences, controller, frame, tester);
// Retrieve WallPanel components
wallPanel = (WallPanel)TestUtilities.findComponent(attributesDialog, WallPanel.class);
leftSideTextureComponent = (TextureChoiceComponent)TestUtilities.getField(wallPanel, "leftSideTextureComponent");
// Edit left side texture
textureDialog = showTexturePanel(preferences, leftSideTextureComponent, true, attributesDialog, tester);
availableTexturesList = (JList)new BasicFinder().find(textureDialog,
new ClassMatcher(JList.class, true));
textureCount = availableTexturesList.getModel().getSize();
// Select modified texture
availableTexturesList.setSelectedValue(modifiedTexture, true);
final JButton deleteButton = (JButton)new BasicFinder().find(textureDialog,
new Matcher() {
public boolean matches(Component c) {
return c instanceof JButton && ((JButton)c).getText().equals(preferences.getLocalizedString(
TextureChoiceComponent.class, "deleteTextureButton.text"));
}
});
tester.invokeAndWait(new Runnable() {
public void run() {
// Display confirm dialog box later in Event Dispatch Thread to avoid blocking test thread
deleteButton.doClick();
}
});
tester.waitForIdle();
// Wait for confirm dialog to be shown
final String confirmDeleteSelectedCatalogTextureDialogTitle = preferences.getLocalizedString(
TextureChoiceComponent.class, "confirmDeleteSelectedCatalogTexture.title");
tester.waitForFrameShowing(new AWTHierarchy(), confirmDeleteSelectedCatalogTextureDialogTitle);
// Check dialog box is displayed
JDialog confirmDialog = (JDialog)new BasicFinder().find(textureDialog,
new Matcher() {
public boolean matches(Component c) {
return c instanceof JDialog && ((JDialog)c).getTitle().equals(
confirmDeleteSelectedCatalogTextureDialogTitle);
}
});
assertTrue("Confirm dialog not showing", confirmDialog.isShowing());
doClickOnOkInDialog(confirmDialog, tester);
tester.waitForIdle();
// Check the list of available textures has one less texture and no selected texture
assertEquals("Wrong texture count in list", textureCount - 1, availableTexturesList.getModel().getSize());
assertEquals("No selected texture in list", 0, availableTexturesList.getSelectedValues().length);
// Check delete button is disabled
assertFalse("Delete button isn't disabled", deleteButton.isEnabled());
// Click on OK in texture dialog box
doClickOnOkInDialog(textureDialog, tester);
// Click on OK in wall dialog box