package org.jmeld.ui; import com.jidesoft.swing.JideTabbedPane; import org.jdesktop.swingworker.SwingWorker; import org.jmeld.ui.util.ImageUtil; import org.jmeld.util.StringUtil; import org.jmeld.util.file.DirectoryDiff; import org.jmeld.util.file.VersionControlDiff; import javax.swing.*; import java.io.File; /** * User: alberto * Date: 16/03/12 * Time: 0:30 */ public class VersionControlComparison extends SwingWorker<String, Object> { private JMeldPanel mainPanel; private File file; private VersionControlDiff diff; private AbstractContentPanel contentPanel; private String contentId; public VersionControlComparison(JMeldPanel mainPanel, File file) { this.mainPanel = mainPanel; this.file = file; } @Override public String doInBackground() { if (StringUtil.isEmpty(file.getName())) { return "file is empty"; } if (!file.exists()) { return "file(" + file.getAbsolutePath() + ") doesn't exist"; } contentId = "VersionControlDiffPanel:" + file.getName(); contentPanel = JMeldPanel.getAlreadyOpen(mainPanel.getTabbedPane(), contentId); if (contentPanel == null) { diff = new VersionControlDiff(file, DirectoryDiff.Mode.TWO_WAY); diff.diff(); } return null; } @Override protected void done() { try { String result = get(); if (result != null) { JOptionPane.showMessageDialog(mainPanel, result, "Error opening file", JOptionPane.ERROR_MESSAGE); } else { JideTabbedPane tabbedPane = mainPanel.getTabbedPane(); if (tabbedPane != null) { if (contentPanel != null) { tabbedPane.setSelectedComponent(contentPanel); } else { VersionControlPanel panel = new VersionControlPanel(mainPanel, diff); panel.setId(contentId); tabbedPane.addTab("VCS Comparation", ImageUtil.getSmallImageIcon("stock_folder"), panel); tabbedPane.setSelectedComponent(panel); } } } } catch (Exception ex) { ex.printStackTrace(); } } }