/* Copyright (C) 2003-2011 JabRef contributors. 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 2 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ package net.sf.jabref.collab; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import net.sf.jabref.*; public class FileUpdatePanel extends SidePaneComponent implements ActionListener, ChangeScanner.DisplayResultCallback { public static final String NAME = "fileUpdate"; JButton test = new JButton(Globals.lang("Review changes")); BasePanel panel; JabRefFrame frame; SidePaneManager manager; JLabel message; ChangeScanner scanner; public FileUpdatePanel(JabRefFrame frame, BasePanel panel, SidePaneManager manager, File file, ChangeScanner scanner) { super(manager, GUIGlobals.getIconUrl("save"), Globals.lang("File changed")); close.setEnabled(false); this.panel = panel; this.frame = frame; this.manager = manager; this.scanner = scanner; JPanel main = new JPanel(); main.setLayout(new BorderLayout()); message = new JLabel("<html><center>" + Globals.lang("The file<BR>'%0'<BR>has been modified<BR>externally!", file.getName()) + "</center></html>", JLabel.CENTER); main.add(message, BorderLayout.CENTER); main.add(test, BorderLayout.SOUTH); main.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1)); add(main, BorderLayout.CENTER); test.addActionListener(this); } /** * We include a getter for the BasePanel this component refers to, because this * component needs to be closed if the BasePanel is closed. * @return the base panel this component refers to. */ public BasePanel getPanel() { return panel; } /** * Unregister when this component closes. We need that to avoid showing * two such external change warnings at the same time, only the latest one. */ public void componentClosing() { manager.unregisterComponent(NAME); } /** * actionPerformed * * @param e * ActionEvent */ public void actionPerformed(ActionEvent e) { // ChangeScanner scanner = new ChangeScanner(frame, panel); //, // panel.database(), panel.metaData()); // try { scanner.displayResult(this); // scanner.changeScan(panel.file()); // } catch (IOException ex) { // ex.printStackTrace(); // } } /** * Callback method for signalling that the change scanner has displayed the * scan results to the user. * @param resolved true if there were no changes, or if the user has resolved them. */ public void scanResultsResolved(boolean resolved) { if (resolved) { manager.hideComponent(this); panel.setUpdatedExternally(false); } } }