From 4c3a16f02bb252970290634371d06ce40c4f923e Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Tue, 3 Sep 2013 14:53:51 -0500 Subject: [PATCH 1/3] Refresh the texture drop down contents when one edits a single copy of a decal --- core/src/net/sf/openrocket/gui/adaptors/DecalModel.java | 4 ++++ .../net/sf/openrocket/gui/configdialog/AppearancePanel.java | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/core/src/net/sf/openrocket/gui/adaptors/DecalModel.java b/core/src/net/sf/openrocket/gui/adaptors/DecalModel.java index 8ff9fe8dc..df164543d 100644 --- a/core/src/net/sf/openrocket/gui/adaptors/DecalModel.java +++ b/core/src/net/sf/openrocket/gui/adaptors/DecalModel.java @@ -93,4 +93,8 @@ public class DecalModel extends AbstractListModel implements ComboBoxModel { } } + public void refresh() { + decals = document.getDecalList().toArray(new DecalImage[0]); + fireContentsChanged(this, 0, decals.length); + } } diff --git a/core/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java b/core/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java index 5648707ce..6a55a845d 100644 --- a/core/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java +++ b/core/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java @@ -145,7 +145,8 @@ public class AppearancePanel extends JPanel { final JButton colorButton = new JButton(new ColorIcon(ab.getPaint())); - final JComboBox textureDropDown = new JComboBox(new DecalModel(this, document, ab)); + final DecalModel decalModel = new DecalModel(this, document, ab); + final JComboBox textureDropDown = new JComboBox(decalModel); ab.addChangeListener(new StateChangeListener() { @Override @@ -274,6 +275,7 @@ public class AppearancePanel extends JPanel { try { DecalImage newImage = editDecalHelper.editDecal(SwingUtilities.getWindowAncestor(AppearancePanel.this), document, c, ab.getImage()); ab.setImage(newImage); + decalModel.refresh(); } catch (EditDecalHelperException ex) { JOptionPane.showMessageDialog(AppearancePanel.this, ex.getMessage(), "", JOptionPane.ERROR_MESSAGE); } From 375f371702d55babe4268219041eada5f978958c Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Tue, 3 Sep 2013 16:16:15 -0500 Subject: [PATCH 2/3] Add a little more protection in getElementAt because Apples' LAF sometimes returns -1. --- core/src/net/sf/openrocket/gui/adaptors/DecalModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/net/sf/openrocket/gui/adaptors/DecalModel.java b/core/src/net/sf/openrocket/gui/adaptors/DecalModel.java index df164543d..28bf50aad 100644 --- a/core/src/net/sf/openrocket/gui/adaptors/DecalModel.java +++ b/core/src/net/sf/openrocket/gui/adaptors/DecalModel.java @@ -46,7 +46,7 @@ public class DecalModel extends AbstractListModel implements ComboBoxModel { @Override public Object getElementAt(int index) { - if (index == 0) { + if (index <= 0) { return NONE_SELECTED; } if (index == getSize() - 1) { From 45ef3064fd7beb15dea3779eac1bf3044c183be7 Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Tue, 3 Sep 2013 20:32:55 -0500 Subject: [PATCH 3/3] Improve refreshing the decal model by doing it whenever the underlying appearance changes. This allows for "From file" to work correctly as well. --- .../src/net/sf/openrocket/gui/configdialog/AppearancePanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java b/core/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java index 6a55a845d..3d1e31d07 100644 --- a/core/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java +++ b/core/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java @@ -154,6 +154,7 @@ public class AppearancePanel extends JPanel { figureColorButton.setIcon(new ColorIcon(c.getColor())); colorButton.setIcon(new ColorIcon(ab.getPaint())); c.setAppearance(ab.getAppearance()); + decalModel.refresh(); } }); @@ -275,7 +276,6 @@ public class AppearancePanel extends JPanel { try { DecalImage newImage = editDecalHelper.editDecal(SwingUtilities.getWindowAncestor(AppearancePanel.this), document, c, ab.getImage()); ab.setImage(newImage); - decalModel.refresh(); } catch (EditDecalHelperException ex) { JOptionPane.showMessageDialog(AppearancePanel.this, ex.getMessage(), "", JOptionPane.ERROR_MESSAGE); }