Hide edit decal button if edit not possible

This commit is contained in:
SiboVG 2023-01-25 00:07:46 +01:00
parent cc0d04aa42
commit fb99a11989

View File

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