mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-15 01:57:39 -05:00
Resolves issue with empty string list models in channel editor
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user