[#1481] Update preset combobox

This commit is contained in:
SiboVG 2022-06-28 19:15:39 +02:00
parent 54f8276c53
commit 55e83bf642
15 changed files with 63 additions and 48 deletions

View File

@ -2071,8 +2071,9 @@ CustomFinImport.error.badimage = Could not deduce fin shape from image.
CustomFinImport.description = The image will be converted internally to black and white image (black for the fin), so make sure you use a solid dark color for the fin, and white or a light color for the background. The fin must be touching the bottom of the image, which is the base of the fin.
PresetModel.lbl.select = Select preset
PresetModel.lbl.database = From database\u2026
PresetModel.lbl.nopreset = No preset
PresetModel.lbl.selectpreset = Select preset
PresetModel.lbl.selectpreset.ttip = Select a preset model for this rocket component from a database of components.
DecalModel.lbl.select = <none>
DecalModel.lbl.choose = From file\u2026

View File

@ -1587,8 +1587,8 @@ CustomFinImport.error.badimage = Nemohu vyvodit tvar stabiliz
CustomFinImport.description = Obrázek bude zmenen na cernobílý \n(cerná pro stabilizátor), ujistete se prosím, \u017Ee jste pou\u017Eily cernou barvu na stabilizátor \na bílou nebo svetlou barvu na pozadí. Stabilizátor \nse musí dotýkat steny obrázku, která predstavuje uchycení pro stabilizátor.
PresetModel.lbl.select = Výber predvolby:
PresetModel.lbl.database = Z databáze...
PresetModel.lbl.nopreset = ?ádné predvolby
PresetModel.lbl.selectpreset = Výber predvolby
! Component Preset Chooser Dialog

View File

@ -1645,8 +1645,8 @@ CustomFinImport.error.badimage = Konnte keine Leitwerksform aus dem Bild erzeuge
CustomFinImport.description = Das Bild wird intern in ein Schwarz-Weiß-Bild konvertiert (Leitwerk: schwarz). Bitte sicherstellen, dass das Leitwerk in einer dichten, dunklen Farbe ist, während der Hintergrund weiß oder sehr hell sein sollte. Das Leitwerk muss das untere Bildende berühren, da dies die Verbindungsstelle zur Rakete wird.
PresetModel.lbl.select = Voreinstellung auswählen:
PresetModel.lbl.database = Aus Datenbank...
PresetModel.lbl.nopreset = Keine Voreinstellung
PresetModel.lbl.selectpreset = Voreinstellung auswählen
! Component Preset Chooser Dialog

View File

@ -737,8 +737,8 @@ PreferencesDialog.languages.default = Idioma por defecto
PreferencesDialog.lbl.language = Idioma de la interfaz:
PreferencesDialog.lbl.languageEffect = El idioma cambiar\u00e1 la pr\u00f3xima vez que abra OpenRocket.
PresetModel.lbl.database = Desde la Base de Datos...
PresetModel.lbl.select = Prefabricado
PresetModel.lbl.nopreset = No hay preselección
PresetModel.lbl.selectpreset = Prefabricado
PrintDialog.but.previewAndPrint = Vista previa e Imprimir
PrintDialog.checkbox.showByStage = Mostrar por etapas

View File

@ -729,8 +729,8 @@ PreferencesDialog.languages.default = Valeur syst\u00E8me par d\u00E9faut
PreferencesDialog.lbl.language = Langue du programme:
PreferencesDialog.lbl.languageEffect = La langue sera chang\u00E9e apr\u00E8s avoir red\u00E9marr\u00E9 OpenRocket.
PresetModel.lbl.database = A partir d'une base de donn\u00E9es...
PresetModel.lbl.select = Choisir une pi\u00E8ce pr\u00E9d\u00E9finie:
PresetModel.lbl.nopreset = Aucune pr\u00E9s\u00E9lection
PresetModel.lbl.selectpreset = Choisir une pi\u00E8ce pr\u00E9d\u00E9finie:
PrintDialog.but.previewAndPrint = Pr\u00E9-visualiser et imprimer
PrintDialog.checkbox.showByStage = Montrer par \u00E9tage

View File

@ -1651,8 +1651,8 @@ CustomFinImport.error.badimage = Non riesco a capire la forma della pinna dall
CustomFinImport.description = L'immagine sar\u00e0 convertita in bianco e nero internamente (nero per le pinne), cos\u00ec assicurati di usare un nero pieno per le pinne e bianco, o colore chiaro, per lo sfondo. La pinna ndeve toccare il fondo dell'immagine, che \u00e8 la base della pinna.
PresetModel.lbl.select = Seleziona precaricati:
PresetModel.lbl.database = Da database...
PresetModel.lbl.nopreset = Nessuna preimpostazione
PresetModel.lbl.selectpreset = Seleziona precaricati
! Component Preset Chooser Dialog

View File

@ -1713,8 +1713,8 @@ CustomFinImport.error.badimage = \u753B\u50CF\u304B\u3089\u30D5\u30A3\u30F3\u5F
CustomFinImport.description = \u753B\u50CF\u306F\u5185\u90E8\u3067\u767D\u80CC\u666F\u3068\u9ED2\u7DDA\u306B\u5909\u63DB\u3055\u308C\u307E\u3059\u3002\u306A\u306E\u3067\u30D5\u30A3\u30F3\u306B\u306F\u6697\u3044\u8272\u306E\u5B9F\u7DDA\u3001\u80CC\u666F\u306B\u306F\u767D\u304B\u660E\u308B\u3044\u8272\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30D5\u30A3\u30F3\u306F\u753B\u50CF\u306E\u5E95\u9762\u306B\u63A5\u3057\u3066\u3044\u306A\u304F\u3066\u306F\u3044\u3051\u307E\u305B\u3093\u3001\u3053\u308C\u306F\u30D5\u30A3\u30F3\u306E\u5E95\u9762\u306B\u306A\u308A\u307E\u3059\u3002
PresetModel.lbl.select = Select preset
PresetModel.lbl.database = From database...
PresetModel.lbl.nopreset = \u30d7\u30ea\u30bb\u30c3\u30c8\u306a\u3057
PresetModel.lbl.selectpreset = \u30d7\u30ea\u30bb\u30c3\u30c8\u9078\u629e
! Component Preset Chooser Dialog

View File

@ -1967,8 +1967,8 @@ CustomFinImport.error.badimage = Kon de vorm van de vin niet afleiden uit het be
CustomFinImport.description = De afbeelding wordt intern geconverteerd naar een zwart-wit afbeelding (zwart voor de vin), dus zorg ervoor dat je een effen donkere kleur gebruikt voor de vin, en wit of een lichte kleur voor de achtergrond. De vin moet de onderkant van het beeld raken, dat is de basis van de vin.
PresetModel.lbl.select = Selecteer preset
PresetModel.lbl.database = Uit databank...
PresetModel.lbl.nopreset = Geen preset
PresetModel.lbl.selectpreset = Selecteer preset
DecalModel.lbl.select = <geen>
DecalModel.lbl.choose = Van bestand...

View File

@ -1592,8 +1592,8 @@ update.dlg.latestVersion = Korzystasz z najnowszej wersji OpenRocket: %s.
CustomFinImport.description = Obraz zostanie automatycznie zamieniony na czarno-bia\u0142y (statecznik w kolorze czarnym), wi\u0119c upewnij si\u0119, \u017Ce kszta\u0142t statecznika jest wype\u0142niony ciemnym kolorem, a t\u0142o jest bia\u0142e lub jasne. Podstawa statecznika musi przylega\u0107 do dolnej kraw\u0119dzi obrazu.
PresetModel.lbl.select = Wybierz ustawienia:
PresetModel.lbl.database = Z bazy danych...
PresetModel.lbl.nopreset = Brak ustawienia
PresetModel.lbl.selectpreset = Wybierz ustawienia
! Component Preset Chooser Dialog

View File

@ -715,8 +715,8 @@ PreferencesDialog.languages.default = Padr\u00e3o do sistema
PreferencesDialog.lbl.language = Idioma da interface:
PreferencesDialog.lbl.languageEffect = A linguagem vai mudar na pr\u00f3xima vez que voc\u00ea iniciar o OpenRocket.
PresetModel.lbl.database = \u00c0 partir do banco de dados...
PresetModel.lbl.select = Selecione ajustes pr\u00e9-definidos
PresetModel.lbl.nopreset = Sem pr\u00e9-definidos
PresetModel.lbl.selectpreset = Selecione ajustes pr\u00e9-definidos
PrintDialog.but.previewAndPrint = Visualiza\u00e7\u00e3o e impress\u00e3o
PrintDialog.checkbox.showByStage = Mostrar por est\u00e1gio

View File

@ -2075,8 +2075,8 @@ CustomFinImport.error.badimage = \u041D\u0435\u0432\u043E\u0437\u043C\u043E\u043
CustomFinImport.description = \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044F \u0432 \u0447\u0435\u0440\u043D\u043E-\u0431\u0435\u043B\u043E\u0435 (\u0433\u0434\u0435 \u0447\u0435\u0440\u043D\u044B\u0439 - \u0446\u0432\u0435\u0442 \u0441\u0442\u0430\u0431\u0438\u043B\u0438\u0437\u0430\u0442\u043E\u0440\u0430), \u0442\u0430\u043A \u0447\u0442\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 \u0447\u0435\u0440\u043D\u044B\u0439 \u0446\u0432\u0435\u0442 \u0434\u043B\u044F \u0440\u0438\u0441\u0443\u043D\u043A\u0430 \u0441\u0442\u0430\u0431\u0438\u043B\u0438\u0437\u0430\u0442\u043E\u0440\u0430 \u0438 \u0431\u0435\u043B\u044B\u0439 \u0438\u043B\u0438 \u0441\u0432\u0435\u0442\u043B\u044B\u0439 \u0446\u0432\u0435\u0442 \u0434\u043B\u044F \u0444\u043E\u043D\u0430. \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u0435 \u0441\u0442\u0430\u0431\u0438\u043B\u0438\u0437\u0430\u0442\u043E\u0440\u0430 \u0434\u043E\u043B\u0436\u043D\u043E \u043D\u0430\u0447\u0438\u043D\u0430\u0442\u044C\u0441\u044F \u0441\u043D\u0438\u0437\u0443 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F.
PresetModel.lbl.select = \u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0437\u0430\u0433\u043E\u0442\u043E\u0432\u043A\u0443
PresetModel.lbl.database = \u0418\u0437 \u0431\u0430\u0437\u044B \u0434\u0430\u043D\u043D\u044B\u0445...
PresetModel.lbl.nopreset = \u041d\u0435\u0442\u0020\u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438
PresetModel.lbl.selectpreset = \u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0437\u0430\u0433\u043E\u0442\u043E\u0432\u043A\u0443
DecalModel.lbl.select = <\u043D\u0435\u0442>
DecalModel.lbl.choose = \u0418\u0437 \u0444\u0430\u0439\u043B\u0430...

View File

@ -1812,8 +1812,8 @@ CustomFinImport.error.badimage = Could not deduce fin shape from image.
CustomFinImport.description = The image will be converted internally to black and white image (black for the fin), so make sure you use a solid dark color for the fin, and white or a light color for the background. The fin must be touching the bottom of the image, which is the base of the fin.
PresetModel.lbl.select = Select preset
PresetModel.lbl.database = From database...
PresetModel.lbl.nopreset = No preset
PresetModel.lbl.selectpreset = Select preset
DecalModel.lbl.select = <none>
DecalModel.lbl.choose = From file...

View File

@ -803,8 +803,8 @@ PreferencesDialog.languages.default = \u7CFB\u7EDF\u9ED8\u8BA4
PreferencesDialog.lbl.language = \u754C\u9762\u8BED\u8A00:
PreferencesDialog.lbl.languageEffect = \u8BED\u8A00\u8BBE\u7F6E\u5C06\u5728OpenRocket\u91CD\u542F\u540E\u751F\u6548
PresetModel.lbl.database = \u4ECE\u6570\u636E\u5E93...
PresetModel.lbl.select = \u9009\u62E9\u9884\u8BBE
PresetModel.lbl.nopreset = \u6ca1\u6709\u9884\u8bbe
PresetModel.lbl.selectpreset = \u9009\u62E9\u9884\u8BBE
PrintDialog.but.previewAndPrint = \u9884\u89C8 & \u6253\u5370
PrintDialog.checkbox.showByStage = \u6309\u7EA7\u663E\u793A

View File

@ -29,8 +29,7 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com
private static final Logger log = LoggerFactory.getLogger(PresetModel.class);
private static final Translator trans = Application.getTranslator();
private static final String NONE_SELECTED = trans.get("lbl.select");
private static final String SELECT_DATABASE = trans.get("lbl.database");
private static final String NONE_SELECTED = String.format("<html><i>%s</i></html>", trans.get("lbl.nopreset"));
private final Component parent;
private final RocketComponent component;
@ -50,7 +49,7 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com
@Override
public int getSize() {
return presets.size() + 2;
return presets.size() + 1;
}
@Override
@ -58,9 +57,6 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com
if (index == 0) {
return NONE_SELECTED;
}
if (index == getSize() - 1) {
return SELECT_DATABASE;
}
return presets.get(index - 1);
}
@ -72,21 +68,6 @@ public class PresetModel extends AbstractListModel implements ComboBoxModel, Com
throw new BugException("item is null");
} else if (item.equals(NONE_SELECTED)) {
component.clearPreset();
} else if (item.equals(SELECT_DATABASE)) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
((ComponentPresetDatabase) Application.getComponentPresetDao()).addDatabaseListener(PresetModel.this);
ComponentPresetChooserDialog dialog =
new ComponentPresetChooserDialog(SwingUtilities.getWindowAncestor(parent), component);
dialog.setVisible(true);
ComponentPreset preset = dialog.getSelectedComponentPreset();
if (preset != null) {
setSelectedItem(preset);
}
((ComponentPresetDatabase) Application.getComponentPresetDao()).removeChangeListener(PresetModel.this);
}
});
} else {
document.addUndoPosition("Use Preset " + component.getComponentName());
component.loadPreset((ComponentPreset) item);

View File

@ -22,8 +22,11 @@ import javax.swing.JSpinner;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import net.miginfocom.swing.MigLayout;
import net.sf.openrocket.database.ComponentPresetDatabase;
import net.sf.openrocket.database.DatabaseListener;
import net.sf.openrocket.document.OpenRocketDocument;
import net.sf.openrocket.gui.SpinnerEditor;
import net.sf.openrocket.gui.adaptors.BooleanModel;
@ -36,6 +39,7 @@ import net.sf.openrocket.gui.components.BasicSlider;
import net.sf.openrocket.gui.components.StyledLabel;
import net.sf.openrocket.gui.components.StyledLabel.Style;
import net.sf.openrocket.gui.components.UnitSelector;
import net.sf.openrocket.gui.dialogs.preset.ComponentPresetChooserDialog;
import net.sf.openrocket.gui.util.GUIUtil;
import net.sf.openrocket.gui.widgets.SelectColorButton;
import net.sf.openrocket.l10n.Translator;
@ -115,8 +119,19 @@ public class RocketComponentConfig extends JPanel {
// If the component supports a preset, show the preset selection box.
presetModel = new PresetModel(this, document, component);
presetComboBox = new JComboBox(presetModel);
presetComboBox.setMaximumRowCount(20);
presetComboBox.setEditable(false);
this.add(presetComboBox, "");
this.add(presetComboBox);
JButton selectPreset = new SelectColorButton(trans.get("PresetModel.lbl.selectpreset"));
selectPreset.setToolTipText(trans.get("PresetModel.lbl.selectpreset.ttip"));
selectPreset.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
selectPreset();
}
});
this.add(selectPreset);
}
tabbedPane = new JTabbedPane();
@ -241,6 +256,24 @@ public class RocketComponentConfig extends JPanel {
}
}
private void selectPreset() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
if (presetComboBox == null || presetModel == null) return;
((ComponentPresetDatabase) Application.getComponentPresetDao()).addDatabaseListener(presetModel);
ComponentPresetChooserDialog dialog =
new ComponentPresetChooserDialog(SwingUtilities.getWindowAncestor(RocketComponentConfig.this), component);
dialog.setVisible(true);
ComponentPreset preset = dialog.getSelectedComponentPreset();
if (preset != null) {
presetComboBox.setSelectedItem(preset);
}
((ComponentPresetDatabase) Application.getComponentPresetDao()).removeChangeListener(presetModel);
}
});
}
public void clearConfigListeners() {
if (appearancePanel != null) {
appearancePanel.clearConfigListeners();