package org.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 javax.swing.SwingConstants; import org.jabref.gui.BasePanel; import org.jabref.gui.IconTheme; import org.jabref.gui.SidePaneComponent; import org.jabref.gui.SidePaneManager; import org.jabref.logic.l10n.Localization; public class FileUpdatePanel extends SidePaneComponent implements ActionListener, ChangeScanner.DisplayResultCallback { private final SidePaneManager manager; private final ChangeScanner scanner; public FileUpdatePanel(BasePanel panel, SidePaneManager manager, File file, ChangeScanner scanner) { super(manager, IconTheme.JabRefIcon.SAVE.getIcon(), Localization.lang("File changed")); close.setEnabled(false); this.panel = panel; this.manager = manager; this.scanner = scanner; JPanel main = new JPanel(); main.setLayout(new BorderLayout()); JLabel message = new JLabel("<html><center>" + Localization.lang("The file<BR>'%0'<BR>has been modified<BR>externally!", file.getName()) + "</center></html>", SwingConstants.CENTER); main.add(message, BorderLayout.CENTER); JButton test = new JButton(Localization.lang("Review changes")); 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. */ @Override public void componentClosing() { manager.unregisterComponent(FileUpdatePanel.class); } @Override public int getRescalingWeight() { return 0; } @Override public ToggleAction getToggleAction() { throw new UnsupportedOperationException(); } /** * actionPerformed * * @param e * ActionEvent */ @Override 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. */ @Override public void scanResultsResolved(boolean resolved) { if (resolved) { manager.hideComponent(this); panel.setUpdatedExternally(false); } } }