/** * ======================== legal notice ====================== * * File: ConfigDialog.java * Created: 13. June 2012, 04:57 * Author: Geronimo * 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. * * 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 * * -------------------------------------------------------------- */ package de.schwarzrot.control.config; import java.awt.Window; import java.util.List; import javax.swing.JComponent; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTable; 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.util.AbstractDialog; import de.schwarzrot.base.util.ApplicationServiceProvider; import de.schwarzrot.control.table.PlayerDefinitionTableFormat; import de.schwarzrot.control.table.ServerDefinitionTableFormat; import de.schwarzrot.media.domain.AbstractMediaNode; import de.schwarzrot.media.domain.Config; import de.schwarzrot.media.domain.MediaServer; import de.schwarzrot.media.domain.PlayerDefinition; public class ConfigDialog extends AbstractDialog { private static final long serialVersionUID = 713L; public ConfigDialog(Window parent) { super(parent, true, DialogMode.CANCEL_APPROVE, Orientation.Right); config = ApplicationServiceProvider.getService(Config.class); } @Override public JComponent createContentPane() { JTabbedPane rv = new JTabbedPane(); rv.addTab("server", createServerTable()); rv.addTab("player", createPlayerTable()); return rv; } protected JComponent createPlayerTable() { playerDefinitions = new BasicEventList(); for (AbstractMediaNode.SupportedMediaType mt : AbstractMediaNode.SupportedMediaType.values()) { if (mt == AbstractMediaNode.SupportedMediaType.Unknown) break; PlayerDefinition pd = config.getPlayerMap().get(mt); pd.setMediaType(mt); playerDefinitions.add(pd); } PlayerDefinitionTableFormat ptf = new PlayerDefinitionTableFormat(); DefaultEventTableModel tm = new DefaultEventTableModel(playerDefinitions, ptf); JTable playerTable = new JTable(tm); JScrollPane playerTableScrollPane = new JScrollPane(playerTable); int mx = playerTable.getColumnModel().getColumnCount(); for (int i = 0; i < mx; ++i) { int cw = ptf.getColumnWidth(i); if (cw > 0) { playerTable.getColumnModel().getColumn(i).setPreferredWidth(cw); playerTable.getColumnModel().getColumn(i).setMaxWidth(cw); } } return playerTableScrollPane; } protected JComponent createServerTable() { serverDefinitions = GlazedLists.eventList(config.getKnownServers()); ServerDefinitionTableFormat stf = new ServerDefinitionTableFormat(); DefaultEventTableModel tm = new DefaultEventTableModel(serverDefinitions, stf); JTable serverTable = new JTable(tm); JScrollPane serverTableScrollPane = new JScrollPane(serverTable); int mx = serverTable.getColumnModel().getColumnCount(); for (int i = 0; i < mx; ++i) { int cw = stf.getColumnWidth(i); if (cw > 0) { serverTable.getColumnModel().getColumn(i).setPreferredWidth(cw); serverTable.getColumnModel().getColumn(i).setMaxWidth(cw); } } return serverTableScrollPane; } @Override protected void performApprove() { System.out.println("should save config now!?!"); List cfgServers = config.getKnownServers(); cfgServers.clear(); cfgServers.addAll(serverDefinitions); } private EventList serverDefinitions; private EventList playerDefinitions; private Config config; }