diff options
author | geronimo <geronimo013@gmx.de> | 2012-08-16 09:47:55 +0200 |
---|---|---|
committer | geronimo <geronimo013@gmx.de> | 2012-08-16 09:47:55 +0200 |
commit | 301f77acdd559f0a5acb5d6750e025c4bd195b82 (patch) | |
tree | 071ec43d81f101b7beb720767b3f0ee098754004 /cmpcj/src/de/schwarzrot/control/config | |
parent | 7573668ef0324f4a5050be428b15e40f7fa61ac3 (diff) | |
download | cmp-301f77acdd559f0a5acb5d6750e025c4bd195b82.tar.gz cmp-301f77acdd559f0a5acb5d6750e025c4bd195b82.tar.bz2 |
fixed revoke of config dialog, and genre editing, improved visual consistency
Diffstat (limited to 'cmpcj/src/de/schwarzrot/control/config')
-rw-r--r-- | cmpcj/src/de/schwarzrot/control/config/ConfigDialog.java | 76 | ||||
-rw-r--r-- | cmpcj/src/de/schwarzrot/control/config/ConfigFactory.java | 35 |
2 files changed, 86 insertions, 25 deletions
diff --git a/cmpcj/src/de/schwarzrot/control/config/ConfigDialog.java b/cmpcj/src/de/schwarzrot/control/config/ConfigDialog.java index 4bc71c7..923a8c9 100644 --- a/cmpcj/src/de/schwarzrot/control/config/ConfigDialog.java +++ b/cmpcj/src/de/schwarzrot/control/config/ConfigDialog.java @@ -26,20 +26,29 @@ package de.schwarzrot.control.config; +import java.awt.Dimension; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import javax.swing.AbstractAction; import javax.swing.JComponent; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTable; import javax.swing.KeyStroke; +import javax.swing.ListSelectionModel; +import bibliothek.gui.dock.common.CControl; +import bibliothek.gui.dock.common.CGrid; +import bibliothek.gui.dock.common.theme.ThemeMap; +import bibliothek.gui.dock.util.WindowProvider; +import bibliothek.gui.dock.util.WindowProviderListener; import ca.odell.glazedlists.BasicEventList; import ca.odell.glazedlists.EventList; -import ca.odell.glazedlists.GlazedLists; import ca.odell.glazedlists.swing.DefaultEventTableModel; +import de.schwarzrot.base.dock.BasicDockable; import de.schwarzrot.base.util.AbstractDialog; import de.schwarzrot.base.util.ApplicationServiceProvider; import de.schwarzrot.control.table.PlayerDefinitionTableFormat; @@ -50,18 +59,26 @@ import de.schwarzrot.media.domain.MediaServer; import de.schwarzrot.media.domain.PlayerDefinition; -public class ConfigDialog extends AbstractDialog { +public class ConfigDialog extends AbstractDialog implements WindowProvider { private static final long serialVersionUID = 713L; public ConfigDialog(Window parent) { super(parent, true, DialogMode.CANCEL_APPROVE, Orientation.Right); config = ApplicationServiceProvider.getService(Config.class); + listeners = new ArrayList<WindowProviderListener>(); + setFixedSize(new Dimension(520, 320)); } @Override - public JComponent createContentPane() { + public void addWindowProviderListener(WindowProviderListener windowproviderlistener) { + if (!listeners.contains(windowproviderlistener)) + listeners.add(windowproviderlistener); + } + + + public JComponent create_Old_ContentPane() { JTabbedPane rv = new JTabbedPane(); rv.addTab("server", createServerTable()); @@ -71,12 +88,50 @@ public class ConfigDialog extends AbstractDialog { } + @Override + public JComponent createContentPane() { + CControl docking = new CControl(this); + CGrid grid = new CGrid(docking); + + docking.setTheme(ThemeMap.KEY_ECLIPSE_THEME); + BasicDockable servers = new BasicDockable("servers", msgBundle.getMessage(getClass().getSimpleName() + + ".servers"), createServerTable()); + BasicDockable players = new BasicDockable("players", msgBundle.getMessage(getClass().getSimpleName() + + ".players"), createPlayerTable()); + + servers.setMinimizable(false); + servers.setExternalizable(false); + servers.setMaximizable(false); + players.setMinimizable(false); + players.setExternalizable(false); + players.setMaximizable(false); + grid.add(0, 0, 1, 1, players); + grid.add(0, 0, 1, 1, servers); + docking.getContentArea().deploy(grid); + + return docking.getContentArea(); + } + + + @Override + public void removeWindowProviderListener(WindowProviderListener windowproviderlistener) { + if (listeners.contains(windowproviderlistener)) + listeners.remove(windowproviderlistener); + } + + + @Override + public Window searchWindow() { + return this; + } + + protected JComponent createPlayerTable() { playerDefinitions = new BasicEventList<PlayerDefinition>(); for (AbstractMediaNode.SupportedMediaType mt : AbstractMediaNode.SupportedMediaType.values()) { if (mt == AbstractMediaNode.SupportedMediaType.Unknown) break; - PlayerDefinition pd = config.getPlayerMap().get(mt); + PlayerDefinition pd = (PlayerDefinition) config.getPlayerMap().get(mt).clone(); // so we can revert changes pd.setMediaType(mt); playerDefinitions.add(pd); @@ -96,6 +151,8 @@ public class ConfigDialog extends AbstractDialog { playerTable.getColumnModel().getColumn(i).setMaxWidth(cw); } } + playerTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + return playerTableScrollPane; } @@ -106,7 +163,9 @@ public class ConfigDialog extends AbstractDialog { protected JComponent createServerTable() { - serverDefinitions = GlazedLists.eventList(config.getKnownServers()); + serverDefinitions = new BasicEventList<MediaServer>(); + for (MediaServer s : config.getKnownServers()) + serverDefinitions.add((MediaServer) s.clone()); ServerDefinitionTableFormat stf = new ServerDefinitionTableFormat(); DefaultEventTableModel<MediaServer> tm = new DefaultEventTableModel<MediaServer>(serverDefinitions, stf); JTable serverTable = new JTable(tm); @@ -131,6 +190,7 @@ public class ConfigDialog extends AbstractDialog { } }); serverTable.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_INSERT, 0), "createServerDefinition"); + serverTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); return serverTableScrollPane; } @@ -140,12 +200,18 @@ public class ConfigDialog extends AbstractDialog { protected void performApprove() { System.out.println("should save config now!?!"); List<MediaServer> cfgServers = config.getKnownServers(); + AbstractMediaNode.SupportedMediaType[] allTypes = AbstractMediaNode.SupportedMediaType.values(); + Map<AbstractMediaNode.SupportedMediaType, PlayerDefinition> cfgPlayers = config.getPlayerMap(); + int mx = allTypes.length - 1; cfgServers.clear(); cfgServers.addAll(serverDefinitions); + for (int i = 0; i < mx; ++i) + cfgPlayers.put(allTypes[i], playerDefinitions.get(i)); } private EventList<MediaServer> serverDefinitions; private EventList<PlayerDefinition> playerDefinitions; + private List<WindowProviderListener> listeners; private Config config; } diff --git a/cmpcj/src/de/schwarzrot/control/config/ConfigFactory.java b/cmpcj/src/de/schwarzrot/control/config/ConfigFactory.java index 5424ef5..edf438a 100644 --- a/cmpcj/src/de/schwarzrot/control/config/ConfigFactory.java +++ b/cmpcj/src/de/schwarzrot/control/config/ConfigFactory.java @@ -1,25 +1,25 @@ /** * ======================== legal notice ====================== * - * File: ConfigFactory.java - * Created: 13. June 2012, 04:57 - * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a> - * Project: cmpc - a java frontend (client) part of compound media player - * uses external players to play the media + * File: ConfigFactory.java Created: 13. June 2012, 04:57 Author: <a + * href="mailto:geronimo013@gmx.de">Geronimo</a> Project: cmpc - a java frontend + * (client) part of compound media player uses external players to play the + * media * * CMP - compound media player * - * is a client/server mediaplayer intended to play any media from any workstation - * without the need to export or mount shares. cmps is an easy to use backend - * with a (ready to use) HTML-interface. Additionally the backend supports - * authentication via HTTP-digest authorization. - * cmpc is a client with vdr-like osd-menues. + * is a client/server mediaplayer intended to play any media from any + * workstation without the need to export or mount shares. cmps is an easy to + * use backend with a (ready to use) HTML-interface. Additionally the backend + * supports authentication via HTTP-digest authorization. cmpc is a client with + * vdr-like osd-menues. * - * Copyright (c) 2012 Reinhard Mantey, some rights reserved! - * published under Creative Commons by-sa - * For details see http://creativecommons.org/licenses/by-sa/3.0/ + * Copyright (c) 2012 Reinhard Mantey, some rights reserved! published under + * Creative Commons by-sa For details see + * http://creativecommons.org/licenses/by-sa/3.0/ * - * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp + * The cmp project's homepage is at + * http://projects.vdr-developer.org/projects/cmp * * -------------------------------------------------------------- */ @@ -107,13 +107,8 @@ public class ConfigFactory { if (parts.length > 1) { pd = new PlayerDefinition(); - String[] cmdline = parts[1].split("\\s+"); - pd.setExecutable(cmdline[0]); - - for (int i = 1; i < cmdline.length; ++i) { - pd.addParameter(cmdline[i]); - } + pd.setCommandLine(parts[1]); if (parts[0].compareTo("*") == 0) { // default player for (Media.SupportedMediaType cmt : Media.SupportedMediaType.values()) |