List of usage examples for com.jgoodies.forms.builder PanelBuilder setRow
public final void setRow(int row)
From source file:tvbrowser.extras.reminderplugin.ReminderFrame.java
License:Open Source License
/** * Creates a new instance of ReminderFrame. * * @param list// ww w .j a va 2 s.c o m * The list of all reminders. * @param reminders * The reminders to show. * @param autoCloseSecs * The number seconds to wait before auto-closing the window. -1 * disables auto-closing. */ public ReminderFrame(final ReminderList list, final AbstractList<ReminderListItem> reminders, final int autoCloseSecs) { mGlobalReminderList = list; mReminderItems = reminders; // Check whether we have to use a frame or dialog // Workaround: If there is a modal dialog open a frame is not usable. All // user interaction will be ignored. // -> If there is a modal dialog open, we show this reminder as // dialog, otherwise as frame. final Window parent = UiUtilities.getLastModalChildOf(MainFrame.getInstance()); String title = mLocalizer.msg("title", "Reminder"); // if this is a favorite, change the title to the name of the favorite if (reminders.size() == 1) { boolean found = false; for (Favorite favorite : FavoriteTreeModel.getInstance().getFavoriteArr()) { for (Program program : favorite.getPrograms()) { if (program.equals(reminders.get(0).getProgram())) { title = favorite.getName(); found = true; break; } } if (found) { break; } } } mDialog = new JDialog(parent, title); UiUtilities.registerForClosing(this); final JPanel jcontentPane = new JPanel(new BorderLayout(0, 10)); jcontentPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); mDialog.setContentPane(jcontentPane); mLayout = new FormLayout("pref:grow,3dlu,pref", "pref,3dlu"); final PanelBuilder programsPanel = new PanelBuilder(mLayout); CellConstraints cc = new CellConstraints(); final Date today = Date.getCurrentDate(); programsPanel.add(mHeader = new JLabel(""), cc.xyw(1, 1, 3)); programsPanel.setRow(3); int remainingMinutesMax = 0; ArrayList<ProgramPanel> panels = new ArrayList<ProgramPanel>(reminders.size()); for (ReminderListItem reminder : reminders) { Program program = reminder.getProgram(); mGlobalReminderList.blockProgram(program); // text label String msg; final int progMinutesAfterMidnight = program.getStartTime(); int remainingMinutes = 0; if (today.compareTo(program.getDate()) >= 0 && IOUtilities.getMinutesAfterMidnight() > progMinutesAfterMidnight) { msg = updateRunningTime(); } else { msg = mLocalizer.msg("soonStarts", "Soon starts"); remainingMinutes = ReminderPlugin.getTimeToProgramStart(program); } mHeader.setText(msg); remainingMinutesMax = Math.max(remainingMinutesMax, remainingMinutes); List<JComponent> componentList = new ArrayList<JComponent>(); mComponents.put(reminder, componentList); final ProgramPanel panel = new ProgramPanel(program, new ProgramPanelSettings( new PluginPictureSettings(PluginPictureSettings.ALL_PLUGINS_SETTINGS_TYPE), false, ProgramPanelSettings.X_AXIS)); componentList.add(panel); panels.add(panel); panel.setMinimumSize(new Dimension(300, 50)); panel.setWidth(300); // register panel with tooltip manager panel.setToolTipText(""); panel.addPluginContextMenuMouseListener(ReminderPluginProxy.getInstance()); final JPanel channelPanel = new JPanel(new BorderLayout()); componentList.add(channelPanel); if (program.getLength() > 0) { final JLabel endTime = new JLabel( mLocalizer.msg("endTime", "until {0}", program.getEndTimeString())); channelPanel.add(endTime, BorderLayout.PAGE_START); } String channelName = program.getChannel().getName(); JLabel channelLabel = new JLabel(); channelLabel.setToolTipText(channelName); channelLabel.setIcon(UiUtilities.createChannelIcon(program.getChannel().getIcon())); channelLabel.setHorizontalTextPosition(SwingConstants.RIGHT); channelPanel.add(channelLabel, BorderLayout.CENTER); channelLabel = new JLabel(channelName); channelPanel.add(channelLabel, BorderLayout.PAGE_END); int layoutStartRow = programsPanel.getRowCount(); mLayout.appendRow(RowSpec.decode("pref")); programsPanel.add(panel, cc.xy(1, programsPanel.getRow(), CellConstraints.FILL, CellConstraints.FILL)); programsPanel.add(channelPanel, cc.xy(3, programsPanel.getRow(), CellConstraints.LEFT, CellConstraints.TOP)); programsPanel.nextRow(); String comment = reminder.getComment(); if (comment != null && comment.length() > 0) { mLayout.appendRow(RowSpec.decode("2dlu")); mLayout.appendRow(RowSpec.decode("pref")); mLayout.appendRow(RowSpec.decode("2dlu")); JLabel commentLabel = new JLabel(comment); componentList.add(commentLabel); programsPanel.add(commentLabel, cc.xyw(1, programsPanel.getRow() + 1, 3)); programsPanel.nextRow(3); } int layoutEndRow = programsPanel.getRowCount(); mPanelRange.put(reminder, new Integer[] { layoutStartRow, layoutEndRow }); } // initialize close button with full text, so it can show the countdown later without size problems mRemainingSecs = autoCloseSecs; mAutoCloseAtMillis = System.currentTimeMillis() + 1000 * autoCloseSecs; final JPanel btnPanel = new JPanel(new BorderLayout(10, 0)); mCloseBtText = Localizer.getLocalization(Localizer.I18N_CLOSE); int seconds = mRemainingSecs; if (ReminderPlugin.getInstance().getSettings().getProperty("showTimeCounter", "false") .compareTo("true") == 0) { seconds = 10; } mCloseBt = new JButton(getCloseButtonText(seconds)); mDialog.getRootPane().setDefaultButton(mCloseBt); for (ReminderListItem reminder : reminders) { if (reminder.getMinutes() < remainingMinutesMax) { remainingMinutesMax = reminder.getMinutes(); } } mReminderCB = new JComboBox(); int i = 0; while (i < REMIND_VALUE_ARR.length && REMIND_VALUE_ARR[i] < remainingMinutesMax) { mReminderCB.addItem(REMIND_MSG_ARR[i]); i++; } // don't show reminder selection if it contains only the // entry "don't remind me" mReminderCB.setVisible(mReminderCB.getItemCount() > 1); btnPanel.add(mReminderCB, BorderLayout.WEST); btnPanel.add(mCloseBt, BorderLayout.EAST); final JScrollPane scrollPane = new JScrollPane(programsPanel.getPanel()); scrollPane.setBorder(BorderFactory.createEmptyBorder()); jcontentPane.add(scrollPane, BorderLayout.CENTER); jcontentPane.add(btnPanel, BorderLayout.SOUTH); mCloseBt.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent event) { close(); } }); if (mRemainingSecs > 0) { updateCloseBtText(); mAutoCloseTimer = new Timer(1000, new ActionListener() { public void actionPerformed(final ActionEvent evt) { handleTimerEvent(); } }); mAutoCloseTimer.start(); } for (ProgramPanel programPanel : panels) { programPanel.setMinimumSize(new Dimension(300, 50)); } mDialog.pack(); mCloseBt.setText(mCloseBtText); mDialog.setAlwaysOnTop(ReminderPlugin.getInstance().getSettings().getProperty("alwaysOnTop", "true") .equalsIgnoreCase("true")); UiUtilities.centerAndShow(mDialog); mDialog.toFront(); if (mDialog.isAlwaysOnTop()) { mDialog.addWindowFocusListener(new WindowFocusListener() { public void windowGainedFocus(final WindowEvent e) { } public void windowLostFocus(final WindowEvent e) { mDialog.setAlwaysOnTop(false); UiUtilities.getLastModalChildOf(MainFrame.getInstance()).toFront(); } }); } mDialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); mDialog.addWindowListener(new WindowAdapter() { public void windowClosing(final WindowEvent e) { close(); } }); for (ReminderListItem reminder : reminders) { reminder.getProgram().addChangeListener(this); } }
From source file:tvpearlplugin.TVPearlPluginSettingsTab.java
License:Open Source License
public JPanel createSettingsPanel() { final FormLayout layout = new FormLayout("5dlu, pref, 3dlu, fill:pref:grow, 5dlu", "5dlu"); final PanelBuilder builder = new PanelBuilder(layout, new ScrollableJPanel()); // builder.setDefaultDialogBorder(); builder.setBorder(null);/*from ww w. j av a 2 s . c o m*/ final CellConstraints cc = new CellConstraints(); mUpdateAtStart = new JCheckBox(mLocalizer.msg("updateAtStart", "Update after TV-Browser start"), mSettings.getUpdatePearlsAfterStart()); mUpdateAfterUpdateFinished = new JCheckBox( mLocalizer.msg("updateAfterUpdateFinished", "Update after program data download"), mSettings.getUpdatePearlsAfterDataUpdate()); mUpdateManual = new JCheckBox(mLocalizer.msg("updateManual", "Update manual"), mSettings.getUpdatePearlsManually()); mViewOption = new JComboBox(getViewOption()); if (mSettings.getShowAllPearls()) { mViewOption.setSelectedIndex(0); } else if (mSettings.getShowSubscribedChannels()) { mViewOption.setSelectedIndex(1); } else if (mSettings.getShowFoundPearls()) { mViewOption.setSelectedIndex(2); } if (mViewOption.getSelectedIndex() < 0) { mViewOption.setSelectedIndex(0); } mMarkPearl = new JCheckBox(mLocalizer.msg("markPearl", "Mark pearls within the TV-Browser"), mSettings.getMarkPearls()); mMarkPriority = new JComboBox(getPriorities()); mMarkPriority.setRenderer(new MarkPriorityComboBoxRenderer()); mMarkPriority.setSelectedIndex(mSettings.getMarkPriority() + 1); mShowInfoModal = new JCheckBox(mLocalizer.msg("modal", "modal Info dialog"), mSettings.getShowInfoModal()); mClientPluginTargets = TVPearlPlugin.getInstance().getClientPluginsTargets(); mPluginLabel = new JLabel(); handlePluginSelection(); final JButton choose = new JButton(mLocalizer.msg("selectPlugins", "Choose Plugins")); choose.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { try { final Window w = UiUtilities.getLastModalChildOf(MainFrame.getInstance()); PluginChooserDlg chooser = null; if (w instanceof JDialog) { chooser = new PluginChooserDlg((JDialog) w, mClientPluginTargets, null, TVPearlPlugin.getInstance()); } else { chooser = new PluginChooserDlg((JFrame) w, mClientPluginTargets, null, TVPearlPlugin.getInstance()); } chooser.setVisible(true); if (chooser.getReceiveTargets() != null) { mClientPluginTargets = chooser.getReceiveTargets(); } handlePluginSelection(); } catch (Exception ee) { ee.printStackTrace(); } } }); final JPanel pluginPanel = new JPanel(new FormLayout("fill:pref:grow, 3dlu, pref", "default")); pluginPanel.add(mPluginLabel, cc.xy(1, 1)); pluginPanel.add(choose, cc.xy(3, 1)); mEnableFilter = new JCheckBox(mLocalizer.msg("enableFilter", "enable filter"), mSettings.getFilterEnabled()); mFilterShowOnly = new JRadioButton(mLocalizer.msg("filterShowOnly", "show only"), mSettings.getFilterIncluding()); mFilterShowNot = new JRadioButton(mLocalizer.msg("filterShowNot", "show not"), mSettings.getFilterExcluding()); final ButtonGroup group = new ButtonGroup(); group.add(mFilterShowOnly); group.add(mFilterShowNot); mFilterComposer = new JTextArea(3, 10); mFilterComposer.setText(getComposers()); final JScrollPane scrollComposer = new JScrollPane(mFilterComposer); mEnableFilter.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { updateFilterEnabled(); } }); updateFilterEnabled(); builder.appendRow(FormFactory.PREF_ROWSPEC); builder.setRow(2); builder.addLabel(mLocalizer.msg("view", "View"), cc.xy(2, builder.getRow())); builder.add(mViewOption, cc.xy(4, builder.getRow())); newLine(builder); builder.add(mShowInfoModal, cc.xyw(2, builder.getRow(), 3)); addSeparator(builder, mLocalizer.msg("programTable", "Program table")); newLine(builder); builder.add(mMarkPearl, cc.xyw(2, builder.getRow(), 3)); newLine(builder); builder.addLabel(mLocalizer.msg("markPriority", "Mark priority"), cc.xy(2, builder.getRow())); builder.add(mMarkPriority, cc.xy(4, builder.getRow())); addSeparator(builder, mLocalizer.msg("sendToPlugin", "Send reminded program to")); newLine(builder); builder.add(pluginPanel, cc.xyw(2, builder.getRow(), 3)); addSeparator(builder, mLocalizer.msg("updateOption", "Update options")); newLine(builder); builder.add(mUpdateAtStart, cc.xyw(2, builder.getRow(), 3)); newLine(builder); builder.add(mUpdateAfterUpdateFinished, cc.xyw(2, builder.getRow(), 3)); newLine(builder); builder.add(mUpdateManual, cc.xyw(2, builder.getRow(), 3)); addSeparator(builder, mLocalizer.msg("filter", "Filter")); newLine(builder); builder.add(mEnableFilter, cc.xyw(2, builder.getRow(), 3)); newLine(builder); builder.add(mFilterShowOnly, cc.xyw(2, builder.getRow(), 3)); newLine(builder); builder.add(mFilterShowNot, cc.xyw(2, builder.getRow(), 3)); newLine(builder); builder.add(scrollComposer, cc.xyw(2, builder.getRow(), 3)); builder.nextRow(2); final JScrollPane scrollPane = new JScrollPane(builder.getPanel()); scrollPane.setBorder(null); scrollPane.setViewportBorder(null); final JPanel scrollPanel = new JPanel(new FormLayout("default:grow", "default")); scrollPanel.setBorder(null); scrollPanel.add(scrollPane, cc.xy(1, 1)); return scrollPanel; }