/* * #%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.dialog; import org.gitools.ui.platform.progress.GitoolsGlassPane; import org.gitools.ui.platform.wizard.AbstractWizardPage; import org.gitools.ui.platform.wizard.IWizardPage; import org.gitools.ui.platform.wizard.IWizardPageUpdateListener; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.util.Arrays; public class GlassPanePageDialog extends GitoolsGlassPane implements IDialog { private AbstractWizardPage page; private int returnStatus = RET_CANCEL; private JButton helpButton; private JButton cancelButton; private JButton finishButton; private DialogHeaderPanel headerPanel; private boolean cancelled; public GlassPanePageDialog(Window parent, AbstractWizardPage page) { super(parent); setShield(1f); if (parent instanceof RootPaneContainer) { ((RootPaneContainer) parent).setGlassPane(this); } createComponents(page); page.addPageUpdateListener(new IWizardPageUpdateListener() { @Override public void pageUpdated(IWizardPage page) { updateState(); } }); this.page = page; } private void updateState() { updateHeaderPanel(page); updateButtons(); } protected void createComponents(IWizardPage page) { headerPanel = new DialogHeaderPanel(); updateHeaderPanel(page); JPanel headerContainer = new JPanel(); headerContainer.setLayout(new BorderLayout()); headerContainer.add(headerPanel, BorderLayout.CENTER); headerContainer.add(new JSeparator(SwingConstants.HORIZONTAL), BorderLayout.SOUTH); JComponent pageContents = page.createControls(); final DialogButtonsPanel buttonsPanel = getButtonsPanel(); JPanel bp = new JPanel(); bp.setLayout(new BorderLayout()); bp.add(new JSeparator(SwingConstants.HORIZONTAL), BorderLayout.NORTH); bp.add(buttonsPanel, BorderLayout.CENTER); this.setLayout(new BorderLayout()); this.add(headerContainer, BorderLayout.NORTH); if (pageContents != null) { this.add(pageContents, BorderLayout.CENTER); pageContents.repaint(); page.updateControls(); } this.add(bp, BorderLayout.SOUTH); } private void updateHeaderPanel(IWizardPage page) { headerPanel.setTitle(page.getTitle()); headerPanel.setMessage(page.getMessage()); headerPanel.setMessageStatus(page.getStatus()); headerPanel.setRightLogo(page.getLogo()); } private void updateButtons() { finishButton.setEnabled(page.isComplete()); cancelButton.setEnabled(true); } /** * Closes the dialog */ private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog doClose(); } private void doClose() { setVisible(false); } public Container getContentPane() { return this; } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseReleased(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } public void escapePressed() { cancelActionPerformed(); } @Override public void open() { this.setVisible(true); } @Override public DialogHeaderPanel getHeaderPanel() { return headerPanel; } @Override public JComponent getContainer() { return this; } 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 finishActionPerformed() { page.updateModel(); cancelled = false; setVisible(false); } public void cancelActionPerformed() { cancelled = true; setVisible(false); } @Override public int getReturnStatus() { return returnStatus; } @Override public boolean isCancelled() { return cancelled; } @Override public void helpActionPerformed() { } }