/* * #%L * gitools-ui-platform * %% * Copyright (C) 2013 Universitat Pompeu Fabra - Biomedical Genomics group * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ package org.gitools.ui.platform.wizard; import org.gitools.ui.platform.dialog.AbstractDialog; import org.gitools.ui.platform.dialog.DialogButtonsPanel; import org.gitools.ui.platform.dialog.DialogHeaderPanel; import org.gitools.ui.platform.dialog.ExceptionGlassPane; import org.gitools.ui.platform.help.Help; import org.gitools.ui.platform.help.HelpContext; import org.gitools.ui.platform.help.HelpException; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Arrays; public class PageDialog extends AbstractDialog { private final IWizardPage page; private boolean cancelled; private JButton cancelButton; private JButton finishButton; private JButton helpButton; private JPanel pagePanel; public PageDialog(Window owner, IWizardPage page) { super(owner, page.getTitle(), page.getLogo(), new Dimension(800, 600), new Dimension(800, 600)); this.page = page; cancelled = true; page.addPageUpdateListener(new IWizardPageUpdateListener() { @Override public void pageUpdated(IWizardPage page) { updateState(); } }); JComponent contents = page.createControls(); pagePanel.add(contents, BorderLayout.CENTER); contents.repaint(); updateState(); page.updateControls(); } protected JComponent createContainer() { pagePanel = new JPanel(new BorderLayout()); return pagePanel; } public DialogButtonsPanel getButtonsPanel() { helpButton = new JButton("Help"); helpButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { helpActionPerformed(); } }); cancelButton = new JButton("Cancel"); cancelButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { cancelActionPerformed(); } }); finishButton = new JButton("Ok"); finishButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { finishActionPerformed(); } }); finishButton.setDefaultCapable(true); return new DialogButtonsPanel(Arrays.asList(cancelButton, finishButton, helpButton)); } public void helpActionPerformed() { HelpContext context = page.getHelpContext(); if (context != null) { try { Help.get().showHelp(context); } catch (HelpException ex) { ExceptionGlassPane dlg = new ExceptionGlassPane(this, ex); dlg.setVisible(true); } } } @Override public void escapePressed() { cancelActionPerformed(); } public void cancelActionPerformed() { cancelled = true; setVisible(false); } public void finishActionPerformed() { page.updateModel(); cancelled = false; setVisible(false); } @Override public boolean isCancelled() { return cancelled; } private void updateState() { DialogHeaderPanel header = getHeaderPanel(); header.setTitle(page.getTitle()); header.setLeftLogo(page.getLogo()); header.setMessageStatus(page.getStatus()); header.setMessage(page.getMessage()); updateButtons(); } private void updateButtons() { finishButton.setEnabled(page.isComplete()); cancelButton.setEnabled(true); } }