diff --git a/src/main/java/io/github/dsheirer/gui/playlist/alias/identifier/DcsEditor.java b/src/main/java/io/github/dsheirer/gui/playlist/alias/identifier/DcsEditor.java index 3579ebc2..02331f52 100644 --- a/src/main/java/io/github/dsheirer/gui/playlist/alias/identifier/DcsEditor.java +++ b/src/main/java/io/github/dsheirer/gui/playlist/alias/identifier/DcsEditor.java @@ -16,13 +16,13 @@ * along with this program. If not, see * **************************************************************************** */ - package io.github.dsheirer.gui.playlist.alias.identifier; import io.github.dsheirer.alias.id.dcs.Dcs; import io.github.dsheirer.module.decode.dcs.DCSCode; import javafx.scene.control.ComboBox; import javafx.scene.control.Label; +import javafx.scene.control.ListCell; import javafx.scene.layout.GridPane; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -57,10 +57,17 @@ public class DcsEditor extends IdentifierEditor public void setItem(Dcs item) { super.setItem(item); + if(item.isValid()) { getDCSCodeComboBox().getSelectionModel().select(item.getDCSCode()); } + else + { + // Clear selection for new/invalid items - shows placeholder + getDCSCodeComboBox().getSelectionModel().clearSelection(); + } + modifiedProperty().set(false); } @@ -78,7 +85,7 @@ public class DcsEditor extends IdentifierEditor /** * Combo-box loaded with DCS codes - * @return + * @return combo box */ private ComboBox getDCSCodeComboBox() { @@ -87,12 +94,37 @@ public class DcsEditor extends IdentifierEditor mDCSCodeComboBox = new ComboBox<>(); mDCSCodeComboBox.getItems().addAll(DCSCode.STANDARD_CODES); mDCSCodeComboBox.getItems().addAll(DCSCode.INVERTED_CODES); + + // Set prompt text shown when nothing is selected + mDCSCodeComboBox.setPromptText("Select Code..."); + + // Custom cell factory to handle display + mDCSCodeComboBox.setButtonCell(new ListCell() + { + @Override + protected void updateItem(DCSCode item, boolean empty) + { + super.updateItem(item, empty); + if(empty || item == null) + { + setText("Select Code..."); + } + else + { + setText(item.toString()); + } + } + }); + mDCSCodeComboBox.valueProperty().addListener((observable, oldValue, newValue) -> { - getItem().setDCSCode(getDCSCodeComboBox().getSelectionModel().getSelectedItem()); - modifiedProperty().set(true); + if(newValue != null) + { + getItem().setDCSCode(newValue); + modifiedProperty().set(true); + } }); } return mDCSCodeComboBox; } -} +} \ No newline at end of file diff --git a/src/main/java/io/github/dsheirer/module/decode/dcs/DCSCode.java b/src/main/java/io/github/dsheirer/module/decode/dcs/DCSCode.java index 218c764e..5fd7e27a 100644 --- a/src/main/java/io/github/dsheirer/module/decode/dcs/DCSCode.java +++ b/src/main/java/io/github/dsheirer/module/decode/dcs/DCSCode.java @@ -148,6 +148,7 @@ public enum DCSCode N172(3084240), N174(2035340), N205(5278907), + N212(2657965), N223(6589323), N226(3442799), N243(6459089),