Add horizontal separator in view type combobox between 2D and 3D viewtypes
This commit is contained in:
parent
0b52d585cc
commit
a944298624
@ -2,6 +2,7 @@ package net.sf.openrocket.gui.scalefigure;
|
|||||||
|
|
||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
|
import java.awt.Component;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
@ -91,10 +92,12 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
|
|||||||
private static final Translator trans = Application.getTranslator();
|
private static final Translator trans = Application.getTranslator();
|
||||||
private static final Logger log = LoggerFactory.getLogger(RocketPanel.class);
|
private static final Logger log = LoggerFactory.getLogger(RocketPanel.class);
|
||||||
|
|
||||||
|
private static final String VIEW_TYPE_SEPARATOR = "__SEPARATOR__"; // Dummy string to indicate a horizontal separator item in the view type combobox
|
||||||
public enum VIEW_TYPE {
|
public enum VIEW_TYPE {
|
||||||
SideView(false, RocketFigure.VIEW_SIDE),
|
SideView(false, RocketFigure.VIEW_SIDE),
|
||||||
TopView(false, RocketFigure.VIEW_TOP),
|
TopView(false, RocketFigure.VIEW_TOP),
|
||||||
BackView(false, RocketFigure.VIEW_BACK),
|
BackView(false, RocketFigure.VIEW_BACK),
|
||||||
|
SEPARATOR(false, -248), // Horizontal combobox separator dummy item
|
||||||
Figure3D(true, RocketFigure3d.TYPE_FIGURE),
|
Figure3D(true, RocketFigure3d.TYPE_FIGURE),
|
||||||
Unfinished(true, RocketFigure3d.TYPE_UNFINISHED),
|
Unfinished(true, RocketFigure3d.TYPE_UNFINISHED),
|
||||||
Finished(true, RocketFigure3d.TYPE_FINISHED);
|
Finished(true, RocketFigure3d.TYPE_FINISHED);
|
||||||
@ -109,6 +112,9 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
|
if (type == -248) {
|
||||||
|
return VIEW_TYPE_SEPARATOR;
|
||||||
|
}
|
||||||
return trans.get("RocketPanel.FigTypeAct." + super.toString());
|
return trans.get("RocketPanel.FigTypeAct." + super.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -313,8 +319,12 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setSelectedItem(Object o) {
|
public void setSelectedItem(Object o) {
|
||||||
super.setSelectedItem(o);
|
|
||||||
VIEW_TYPE v = (VIEW_TYPE) o;
|
VIEW_TYPE v = (VIEW_TYPE) o;
|
||||||
|
if (v == VIEW_TYPE.SEPARATOR) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
super.setSelectedItem(o);
|
||||||
if (v.is3d) {
|
if (v.is3d) {
|
||||||
figure3d.setType(v.type);
|
figure3d.setType(v.type);
|
||||||
go3D();
|
go3D();
|
||||||
@ -326,7 +336,9 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
ribbon.add(new JLabel(trans.get("RocketPanel.lbl.ViewType")), "cell 0 0");
|
ribbon.add(new JLabel(trans.get("RocketPanel.lbl.ViewType")), "cell 0 0");
|
||||||
ribbon.add(new JComboBox<VIEW_TYPE>(cm), "cell 0 1");
|
final JComboBox viewSelector = new JComboBox(cm);
|
||||||
|
viewSelector.setRenderer(new SeparatorComboBoxRenderer(viewSelector.getRenderer()));
|
||||||
|
ribbon.add(viewSelector, "cell 0 1");
|
||||||
|
|
||||||
// Zoom level selector
|
// Zoom level selector
|
||||||
scaleSelector = new ScaleSelector(scrollPane);
|
scaleSelector = new ScaleSelector(scrollPane);
|
||||||
@ -1063,40 +1075,27 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
|
|||||||
figure3d.setSelection(components);
|
figure3d.setSelection(components);
|
||||||
}
|
}
|
||||||
|
|
||||||
// /**
|
/**
|
||||||
// * An <code>Action</code> that shows whether the figure type is the
|
* Custom combobox renderer that supports the display of horizontal separators between items.
|
||||||
// type
|
* ComboBox objects with the text {@link VIEW_TYPE_SEPARATOR} objects in the combobox are replaced by a separator object.
|
||||||
// * given in the constructor.
|
*/
|
||||||
// *
|
private static class SeparatorComboBoxRenderer extends JLabel implements ListCellRenderer {
|
||||||
// * @author Sampo Niskanen <sampo.niskanen@iki.fi>
|
private final JSeparator separator;
|
||||||
// */
|
private final ListCellRenderer defaultRenderer;
|
||||||
// private class FigureTypeAction extends AbstractAction implements
|
|
||||||
// StateChangeListener {
|
public SeparatorComboBoxRenderer(ListCellRenderer defaultRenderer) {
|
||||||
// private static final long serialVersionUID = 1L;
|
this.defaultRenderer = defaultRenderer;
|
||||||
// private final VIEW_TYPE type;
|
this.separator = new JSeparator(JSeparator.HORIZONTAL);
|
||||||
//
|
}
|
||||||
// public FigureTypeAction(VIEW_TYPE type) {
|
|
||||||
// this.type = type;
|
public Component getListCellRendererComponent(JList list, Object value,
|
||||||
// stateChanged(null);
|
int index, boolean isSelected, boolean cellHasFocus) {
|
||||||
// figure.addChangeListener(this);
|
String str = (value == null) ? "" : value.toString();
|
||||||
// }
|
if (VIEW_TYPE_SEPARATOR.equals(str)) {
|
||||||
//
|
return separator;
|
||||||
// @Override
|
};
|
||||||
// public void actionPerformed(ActionEvent e) {
|
return defaultRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
|
||||||
// boolean state = (Boolean) getValue(Action.SELECTED_KEY);
|
}
|
||||||
// if (state == true) {
|
}
|
||||||
// // This view has been selected
|
|
||||||
// figure.setType(type);
|
|
||||||
// go2D();
|
|
||||||
// updateExtras();
|
|
||||||
// }
|
|
||||||
// stateChanged(null);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void stateChanged(EventObject e) {
|
|
||||||
// putValue(Action.SELECTED_KEY, figure.getType() == type && !is3d);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user