Hide edit decal button if edit not possible
This commit is contained in:
parent
cc0d04aa42
commit
fb99a11989
@ -2,6 +2,7 @@ package net.sf.openrocket.gui.configdialog;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
import java.awt.Desktop;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.lang.reflect.Method;
|
||||
@ -494,13 +495,11 @@ public class AppearancePanel extends JPanel {
|
||||
if (!insideBuilder) {
|
||||
builder = ab;
|
||||
mDefault = new BooleanModel(c.getAppearance() == null || defaultAppearance.equals(c.getAppearance()));
|
||||
}
|
||||
else if (c instanceof InsideColorComponent) {
|
||||
} else if (c instanceof InsideColorComponent) {
|
||||
builder = insideAb;
|
||||
Appearance appearance = ((InsideColorComponent)c).getInsideColorComponentHandler().getInsideAppearance();
|
||||
Appearance appearance = ((InsideColorComponent) c).getInsideColorComponentHandler().getInsideAppearance();
|
||||
mDefault = new BooleanModel(appearance == null || defaultAppearance.equals(appearance));
|
||||
}
|
||||
else return;
|
||||
} else return;
|
||||
|
||||
DecalModel decalModel = new DecalModel(panel, document, builder);
|
||||
JComboBox<DecalImage> textureDropDown = new JComboBox<DecalImage>(decalModel);
|
||||
@ -509,6 +508,7 @@ public class AppearancePanel extends JPanel {
|
||||
// for multi-comp edits, the listeners' decals may not be updated otherwise
|
||||
textureDropDown.addActionListener(new ActionListener() {
|
||||
private DecalImage previousSelection = (DecalImage) decalModel.getSelectedItem();
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
DecalImage decal = (DecalImage) textureDropDown.getSelectedItem();
|
||||
@ -534,8 +534,7 @@ public class AppearancePanel extends JPanel {
|
||||
if (!insideBuilder) {
|
||||
previousUserSelectedAppearance = (builder == null) ? null
|
||||
: builder.getAppearance();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
previousUserSelectedInsideAppearance = (builder == null) ? null
|
||||
: builder.getAppearance();
|
||||
}
|
||||
@ -556,8 +555,7 @@ public class AppearancePanel extends JPanel {
|
||||
listener.setAppearance(previousUserSelectedAppearance);
|
||||
}
|
||||
builder.setAppearance(previousUserSelectedAppearance);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
// Set the listeners' inside appearance to the previous user selected appearance
|
||||
for (AppearanceBuilder listener : builder.getConfigListeners().values()) {
|
||||
listener.setAppearance(previousUserSelectedInsideAppearance);
|
||||
@ -576,37 +574,41 @@ public class AppearancePanel extends JPanel {
|
||||
JPanel p = new JPanel(new MigLayout("fill, ins 0", "[grow][]"));
|
||||
mDefault.addEnableComponent(textureDropDown, false);
|
||||
p.add(textureDropDown, "grow");
|
||||
panel.add(p, "span 3, growx, wrap");
|
||||
panel.add(p, "spanx 3, growx, wrap");
|
||||
order.add(textureDropDown);
|
||||
JButton editBtn = new SelectColorButton(
|
||||
trans.get("AppearanceCfg.but.edit"));
|
||||
editBtn.setEnabled(builder.getImage() != null);
|
||||
// Enable the editBtn only when the appearance builder has an Image
|
||||
// assigned to it.
|
||||
builder.addChangeListener(new StateChangeListener() {
|
||||
@Override
|
||||
public void stateChanged(EventObject e) {
|
||||
editBtn.setEnabled(builder.getImage() != null);
|
||||
}
|
||||
});
|
||||
|
||||
editBtn.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
try {
|
||||
DecalImage newImage = editDecalHelper.editDecal(
|
||||
SwingUtilities
|
||||
.getWindowAncestor(panel),
|
||||
document, c, builder.getImage(), insideBuilder);
|
||||
builder.setImage(newImage);
|
||||
} catch (EditDecalHelperException ex) {
|
||||
JOptionPane.showMessageDialog(panel,
|
||||
ex.getMessage(), "", JOptionPane.ERROR_MESSAGE);
|
||||
//// Edit button
|
||||
if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.EDIT)) {
|
||||
JButton editBtn = new SelectColorButton(
|
||||
trans.get("AppearanceCfg.but.edit"));
|
||||
editBtn.setEnabled(builder.getImage() != null);
|
||||
// Enable the editBtn only when the appearance builder has an Image
|
||||
// assigned to it.
|
||||
builder.addChangeListener(new StateChangeListener() {
|
||||
@Override
|
||||
public void stateChanged(EventObject e) {
|
||||
editBtn.setEnabled(builder.getImage() != null);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
p.add(editBtn);
|
||||
editBtn.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
try {
|
||||
DecalImage newImage = editDecalHelper.editDecal(
|
||||
SwingUtilities
|
||||
.getWindowAncestor(panel),
|
||||
document, c, builder.getImage(), insideBuilder);
|
||||
builder.setImage(newImage);
|
||||
} catch (EditDecalHelperException ex) {
|
||||
JOptionPane.showMessageDialog(panel,
|
||||
ex.getMessage(), "", JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
p.add(editBtn);
|
||||
}
|
||||
|
||||
// TODO: move the separate columns in two separate panels instead of adding them in a zig-zag way
|
||||
// Color
|
||||
|
Loading…
x
Reference in New Issue
Block a user