attributesDialog, WallPanel.class);
JSpinner xStartSpinner =
(JSpinner)TestUtilities.getField(wallPanel, "xStartSpinner");
JSpinner xEndSpinner =
(JSpinner)TestUtilities.getField(wallPanel, "xEndSpinner");
TextureChoiceComponent rightSideTextureComponent =
(TextureChoiceComponent)TestUtilities.getField(wallPanel, "rightSideTextureComponent");
// 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