Resolves issue with empty string list models in channel editor

This commit is contained in:
Denny
2017-02-26 10:29:14 -05:00
parent 5e731d0e9f
commit 09cf4fcfd7

View File

@@ -17,253 +17,251 @@
******************************************************************************/ ******************************************************************************/
package controller.channel; package controller.channel;
import alias.AliasModel;
import gui.editor.Editor; import gui.editor.Editor;
import net.miginfocom.swing.MigLayout;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.miginfocom.swing.MigLayout;
import alias.AliasModel;
public class NameConfigurationEditor extends Editor<Channel> implements DocumentListener public class NameConfigurationEditor extends Editor<Channel> implements DocumentListener
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private final static Logger mLog = LoggerFactory.getLogger( NameConfigurationEditor.class ); private final static Logger mLog = LoggerFactory.getLogger(NameConfigurationEditor.class);
private static ComboBoxModel<String> EMPTY_MODEL = new DefaultComboBoxModel<>(); private static ComboBoxModel<String> EMPTY_SYSTEM_MODEL = new DefaultComboBoxModel<>();
private static ComboBoxModel<String> EMPTY_SITE_MODEL = new DefaultComboBoxModel<>();
private static ComboBoxModel<String> EMPTY_ALIAS_LIST_MODEL = new DefaultComboBoxModel<>();
private AliasModel mAliasModel; private AliasModel mAliasModel;
private ChannelModel mChannelModel; private ChannelModel mChannelModel;
private JTextField mChannelName; private JTextField mChannelName;
private JComboBox<String> mSystemNameCombo; private JComboBox<String> mSystemNameCombo;
private JComboBox<String> mSiteNameCombo; private JComboBox<String> mSiteNameCombo;
private JComboBox<String> mAliasListCombo; private JComboBox<String> mAliasListCombo;
public NameConfigurationEditor( AliasModel aliasModel, ChannelModel model ) public NameConfigurationEditor(AliasModel aliasModel, ChannelModel model)
{ {
mAliasModel = aliasModel; mAliasModel = aliasModel;
mChannelModel = model; mChannelModel = model;
init(); init();
} }
private void init() private void init()
{ {
setLayout( new MigLayout( "fill,wrap 4", "[right][grow,fill][right][grow,fill]", "[][][grow]" ) ); setLayout(new MigLayout("fill,wrap 4", "[right][grow,fill][right][grow,fill]", "[][][grow]"));
mChannelName = new JTextField( "" ); mChannelName = new JTextField("");
mChannelName.getDocument().addDocumentListener( this ); mChannelName.getDocument().addDocumentListener(this);
mChannelName.setEnabled( false ); mChannelName.setEnabled(false);
add( new JLabel( "Name:" ) ); add(new JLabel("Name:"));
add( mChannelName ); add(mChannelName);
mSystemNameCombo = new JComboBox<>( EMPTY_MODEL ); mSystemNameCombo = new JComboBox<>(EMPTY_SYSTEM_MODEL);
mSystemNameCombo.setEnabled( false ); mSystemNameCombo.setEnabled(false);
mSystemNameCombo.setEditable( true ); mSystemNameCombo.setEditable(true);
mSystemNameCombo.addActionListener( new ActionListener() mSystemNameCombo.addActionListener(new ActionListener()
{ {
@Override @Override
public void actionPerformed( ActionEvent e ) public void actionPerformed(ActionEvent e)
{ {
Object selected = mSystemNameCombo.getSelectedItem(); Object selected = mSystemNameCombo.getSelectedItem();
if( selected != null ) if(selected != null)
{ {
String system = (String)selected; String system = (String)selected;
List<String> sites = mChannelModel.getSites( system ); List<String> sites = mChannelModel.getSites(system);
if( !sites.contains( getItem().getSite() ) ) if(!sites.contains(getItem().getSite()))
{ {
sites.add( getItem().getSite() ); sites.add(getItem().getSite());
} }
if( sites.isEmpty() ) if(sites.isEmpty())
{ {
mSiteNameCombo.setModel( EMPTY_MODEL ); mSiteNameCombo.setModel(EMPTY_SITE_MODEL);
} }
else else
{ {
mSiteNameCombo.setModel( new DefaultComboBoxModel<String>( mSiteNameCombo.setModel(new DefaultComboBoxModel<String>(
sites.toArray( new String[ sites.size() ] ) ) );; sites.toArray(new String[sites.size()])));
} ;
}
mSiteNameCombo.setSelectedItem( getItem().getSite() ); mSiteNameCombo.setSelectedItem(getItem().getSite());
} }
setModified( true ); setModified(true);
} }
} ); });
add( new JLabel( "System:" ) ); add(new JLabel("System:"));
add( mSystemNameCombo ); add(mSystemNameCombo);
mAliasListCombo = new JComboBox<String>(); mAliasListCombo = new JComboBox<String>(EMPTY_ALIAS_LIST_MODEL);
mAliasListCombo.setEnabled( false ); mAliasListCombo.setEnabled(false);
mAliasListCombo.setEditable( true ); mAliasListCombo.setEditable(true);
mAliasListCombo.addActionListener( new ActionListener() mAliasListCombo.addActionListener(new ActionListener()
{ {
@Override @Override
public void actionPerformed( ActionEvent e ) public void actionPerformed(ActionEvent e)
{ {
setModified( true ); setModified(true);
} }
} ); });
add( new JLabel( "Alias List:" ) ); add(new JLabel("Alias List:"));
add( mAliasListCombo ); add(mAliasListCombo);
mSiteNameCombo = new JComboBox<>( EMPTY_MODEL ); mSiteNameCombo = new JComboBox<>(EMPTY_SITE_MODEL);
mSiteNameCombo.setEnabled( false ); mSiteNameCombo.setEnabled(false);
mSiteNameCombo.setEditable( true ); mSiteNameCombo.setEditable(true);
mSiteNameCombo.addActionListener( new ActionListener() mSiteNameCombo.addActionListener(new ActionListener()
{ {
@Override @Override
public void actionPerformed( ActionEvent e ) public void actionPerformed(ActionEvent e)
{ {
setModified( true ); setModified(true);
} }
} ); });
add( new JLabel( "Site:" ) ); add(new JLabel("Site:"));
add( mSiteNameCombo ); add(mSiteNameCombo);
} }
@Override @Override
public void save() public void save()
{ {
if( hasItem() && isModified() ) if(hasItem() && isModified())
{ {
getItem().setName( mChannelName.getText() ); getItem().setName(mChannelName.getText());
Object system = mSystemNameCombo.getSelectedItem(); Object system = mSystemNameCombo.getSelectedItem();
getItem().setSystem( ( system == null ? null : (String)system ) ); getItem().setSystem((system == null ? null : (String)system));
Object site = mSiteNameCombo.getSelectedItem(); Object site = mSiteNameCombo.getSelectedItem();
getItem().setSite( ( site == null ? null : (String)site ) ); getItem().setSite((site == null ? null : (String)site));
Object aliasList = mAliasListCombo.getSelectedItem(); Object aliasList = mAliasListCombo.getSelectedItem();
getItem().setAliasListName( aliasList == null ? null : (String)aliasList ); getItem().setAliasListName(aliasList == null ? null : (String)aliasList);
} }
setModified( false ); setModified(false);
} }
private void setControlsEnabled( boolean enabled ) private void setControlsEnabled(boolean enabled)
{ {
if( mChannelName.isEnabled() != enabled ) if(mChannelName.isEnabled() != enabled)
{ {
mChannelName.setEnabled( enabled ); mChannelName.setEnabled(enabled);
} }
if( mAliasListCombo.isEnabled() != enabled ) if(mAliasListCombo.isEnabled() != enabled)
{ {
mAliasListCombo.setEnabled( enabled ); mAliasListCombo.setEnabled(enabled);
} }
if( mSystemNameCombo.isEnabled() != enabled ) if(mSystemNameCombo.isEnabled() != enabled)
{ {
mSystemNameCombo.setEnabled( enabled ); mSystemNameCombo.setEnabled(enabled);
} }
if( mSiteNameCombo.isEnabled() != enabled ) if(mSiteNameCombo.isEnabled() != enabled)
{ {
mSiteNameCombo.setEnabled( enabled ); mSiteNameCombo.setEnabled(enabled);
} }
} }
@Override @Override
public void setItem( Channel channel ) public void setItem(Channel channel)
{ {
super.setItem( channel ); super.setItem(channel);
if( hasItem() ) if(hasItem())
{ {
setControlsEnabled( true ); setControlsEnabled(true);
mChannelName.setText( channel.getName() ); mChannelName.setText(channel.getName());
List<String> systems = mChannelModel.getSystems(); List<String> systems = mChannelModel.getSystems();
if( systems.isEmpty() ) if(systems.isEmpty())
{ {
mSystemNameCombo.setModel( EMPTY_MODEL ); mSystemNameCombo.setModel(EMPTY_SYSTEM_MODEL);
} }
else else
{ {
mSystemNameCombo.setModel( new DefaultComboBoxModel<String>( mSystemNameCombo.setModel(new DefaultComboBoxModel<String>(
systems.toArray( new String[ systems.size() ] ) ) );; systems.toArray(new String[systems.size()])));
} ;
}
mSystemNameCombo.setSelectedItem( channel.getSystem() ); mSystemNameCombo.setSelectedItem(channel.getSystem());
List<String> sites = mChannelModel.getSites( channel.getSystem() ); List<String> sites = mChannelModel.getSites(channel.getSystem());
if( sites.isEmpty() ) if(sites.isEmpty())
{ {
mSiteNameCombo.setModel( EMPTY_MODEL ); mSiteNameCombo.setModel(EMPTY_SITE_MODEL);
} }
else else
{ {
mSiteNameCombo.setModel( new DefaultComboBoxModel<String>( mSiteNameCombo.setModel(new DefaultComboBoxModel<String>(
sites.toArray( new String[ sites.size() ] ) ) );; sites.toArray(new String[sites.size()])));
} ;
}
if( channel.getSite() != null ) if(channel.getSite() != null)
{ {
mSiteNameCombo.setSelectedItem( channel.getSite() ); mSiteNameCombo.setSelectedItem(channel.getSite());
} }
List<String> lists = mAliasModel.getListNames(); List<String> lists = mAliasModel.getListNames();
Collections.sort( lists ); Collections.sort(lists);
mAliasListCombo.setModel( new DefaultComboBoxModel<String>( mAliasListCombo.setModel(new DefaultComboBoxModel<String>(
lists.toArray( new String[ lists.size() ] ) ) ); lists.toArray(new String[lists.size()])));
if( channel.getAliasListName() != null ) if(channel.getAliasListName() != null)
{ {
mAliasListCombo.setSelectedItem( channel.getAliasListName() ); mAliasListCombo.setSelectedItem(channel.getAliasListName());
} }
} }
else else
{ {
setControlsEnabled( false ); setControlsEnabled(false);
mChannelName.setText( null ); mChannelName.setText(null);
} }
setModified( false ); setModified(false);
} }
@Override @Override
public void insertUpdate( DocumentEvent e ) public void insertUpdate(DocumentEvent e)
{ {
setModified( true ); setModified(true);
} }
@Override @Override
public void changedUpdate( DocumentEvent e ) public void changedUpdate(DocumentEvent e)
{ {
setModified( true ); setModified(true);
} }
@Override @Override
public void removeUpdate( DocumentEvent e ) public void removeUpdate(DocumentEvent e)
{ {
setModified( true ); setModified(true);
} }
} }