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