/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package feuille.analysis;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Frame;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.filechooser.FileFilter;
import javax.swing.plaf.nimbus.NimbusLookAndFeel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import feuille.analysis.dialog.AnalyzeDialog;
import feuille.filter.SubtitleFilter;
import feuille.analysis.lib.BarChart;
import feuille.analysis.lib.BarChart3D;
import feuille.analysis.lib.LineChangeObject;
import feuille.analysis.lib.PieChart;
import feuille.analysis.lib.PieChart3D;
import feuille.analysis.renderer.CompareRenderer;
import feuille.karaoke.lib.AssIO;
import feuille.karaoke.lib.AssInfos;
import feuille.karaoke.lib.AssNameCollection;
import feuille.karaoke.lib.AssStyleCollection;
import feuille.karaoke.lib.ProgramLine;
import feuille.lib.Language;
/**
*
* @author The Wingate 2940
*/
public class AnalysisPanel extends javax.swing.JPanel {
private DefaultTableModel firstModel, secondModel;
private AssStyleCollection firstStyleCollection = new AssStyleCollection();
private AssStyleCollection secondStyleCollection = new AssStyleCollection();
private AssInfos firstInfos = new AssInfos();
private AssInfos secondInfos = new AssInfos();
private AssNameCollection firstNameCollection = new AssNameCollection();
private AssNameCollection secondNameCollection = new AssNameCollection();
private CompareRenderer firstCR = new CompareRenderer();
private CompareRenderer secondCR = new CompareRenderer();
//VLCj vlc = new VLCj();
private List<ProgramLine> firstSubList = new ArrayList<>();
private List<ProgramLine> secondSubList = new ArrayList<>();
//StartFrame sf = new StartFrame();
//static JLabel lblCurrentTime = new JLabel();
private Map<String, Integer> firstchartmap = new HashMap<>();
private Map<String, Integer> secondchartmap = new HashMap<>();
private Frame frame;
private Language localeLanguage = feuille.MainFrame.getLanguage();
/**
* Creates new form AnalysisPanel
*/
public AnalysisPanel(Frame frame) {
this.frame = frame;
initComponents();
init();
}
private void init() {
//Configuration du Look&Feel
try {
javax.swing.UIManager.setLookAndFeel(new NimbusLookAndFeel());
javax.swing.SwingUtilities.updateComponentTreeUI(this);
} catch (Exception exc) {
System.out.println("Nimbus LookAndFeel not loaded : "+exc);
}
//Configuration des tables
String[] fHead = new String[]{"#", "T", "L", "Marg.", "Start", "End",
"Total", "Style", "Name", "Effect", "Text", "Change"};
firstModel = new DefaultTableModel(null,fHead){
Class[] types = new Class [] {
String.class, String.class, String.class,
String.class, String.class, String.class,
String.class, String.class, String.class,
String.class, String.class, LineChangeObject.class};
boolean[] canEdit = new boolean [] {
false, false, false,
false, false, false,
false, false, false,
false, false, false};
@Override
public Class getColumnClass(int columnIndex) {return types [columnIndex];}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {return canEdit [columnIndex];}
};
firstTable.setModel(firstModel);
TableColumn column;
for (int i = 0; i < 12; i++) {
column = firstTable.getColumnModel().getColumn(i);
switch(i){
case 0: column.setPreferredWidth(30); column.setIdentifier(Column.ID.getId()); break; //ID
case 1: column.setPreferredWidth(30); column.setIdentifier(Column.TYPE.getId()); break; //Type
case 2: column.setPreferredWidth(30); column.setIdentifier(Column.LAYER.getId()); break; //Layer
case 3: column.setPreferredWidth(60); column.setIdentifier(Column.MARGINS.getId()); break; //Margins
case 4: column.setPreferredWidth(90); column.setIdentifier(Column.START.getId()); break; //Start
case 5: column.setPreferredWidth(90); column.setIdentifier(Column.END.getId()); break; //End
case 6: column.setPreferredWidth(90); column.setIdentifier(Column.TOTAL.getId()); break; //Total time
case 7: column.setPreferredWidth(80); column.setIdentifier(Column.STYLE.getId()); break; //Style
case 8: column.setPreferredWidth(80); column.setIdentifier(Column.NAME.getId()); break; //Name
case 9: column.setPreferredWidth(20); column.setIdentifier(Column.EFFECTS.getId()); break; //Effects
case 10: column.setPreferredWidth(700); column.setIdentifier(Column.TEXT.getId()); break; //Text
case 11: column.setPreferredWidth(20); column.setIdentifier(Column.FX.getId()); break; //LineChangeObject
}
}
firstTable.setDefaultRenderer(String.class, firstCR);
firstTable.setDefaultRenderer(LineChangeObject.class, new CompareRenderer());
String[] sHead = new String[]{"#", "T", "L", "Marg.", "Start", "End",
"Total", "Style", "Name", "Effect", "Text", "Change"};
secondModel = new DefaultTableModel(null,sHead){
Class[] types = new Class [] {
String.class, String.class, String.class,
String.class, String.class, String.class,
String.class, String.class, String.class,
String.class, String.class, LineChangeObject.class};
boolean[] canEdit = new boolean [] {
false, false, false,
false, false, false,
false, false, false,
false, false, false};
@Override
public Class getColumnClass(int columnIndex) {return types [columnIndex];}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {return canEdit [columnIndex];}
};
secondTable.setModel(secondModel);
for (int i = 0; i < 12; i++) {
column = secondTable.getColumnModel().getColumn(i);
switch(i){
case 0: column.setPreferredWidth(30); column.setIdentifier(Column.ID.getId()); break; //ID
case 1: column.setPreferredWidth(30); column.setIdentifier(Column.TYPE.getId()); break; //Type
case 2: column.setPreferredWidth(30); column.setIdentifier(Column.LAYER.getId()); break; //Layer
case 3: column.setPreferredWidth(60); column.setIdentifier(Column.MARGINS.getId()); break; //Margins
case 4: column.setPreferredWidth(90); column.setIdentifier(Column.START.getId()); break; //Start
case 5: column.setPreferredWidth(90); column.setIdentifier(Column.END.getId()); break; //End
case 6: column.setPreferredWidth(90); column.setIdentifier(Column.TOTAL.getId()); break; //Total time
case 7: column.setPreferredWidth(80); column.setIdentifier(Column.STYLE.getId()); break; //Style
case 8: column.setPreferredWidth(80); column.setIdentifier(Column.NAME.getId()); break; //Name
case 9: column.setPreferredWidth(20); column.setIdentifier(Column.EFFECTS.getId()); break; //Effects
case 10: column.setPreferredWidth(700); column.setIdentifier(Column.TEXT.getId()); break; //Text
case 11: column.setPreferredWidth(20); column.setIdentifier(Column.FX.getId()); break; //LineChangeObject
}
}
secondTable.setDefaultRenderer(String.class, secondCR);
secondTable.setDefaultRenderer(LineChangeObject.class, new CompareRenderer());
//VLC
//jPanel1.add(vlc);
//CurrentTime label
//lblCurrentTime.setForeground(Color.magenta);
//lblCurrentTime.setText("0:00:00.00");
//jToolBar1.add(lblCurrentTime, 10);
if(localeLanguage.getValueOf("ifrFirstTable")!=null){
ifrFirstTable.setTitle(localeLanguage.getValueOf("ifrFirstTable"));}
if(localeLanguage.getValueOf("ifrSecondTable")!=null){
ifrSecondTable.setTitle(localeLanguage.getValueOf("ifrSecondTable"));}
if(localeLanguage.getValueOf("ifrFirstReport")!=null){
ifrFirstReport.setTitle(localeLanguage.getValueOf("ifrFirstReport"));}
if(localeLanguage.getValueOf("ifrSecondReport")!=null){
ifrSecondReport.setTitle(localeLanguage.getValueOf("ifrSecondReport"));}
if(localeLanguage.getValueOf("toolOpen")!=null){
btnOpenOld.setToolTipText(localeLanguage.getValueOf("toolOpen"));
btnOpenNew.setToolTipText(localeLanguage.getValueOf("toolOpen"));}
if(localeLanguage.getValueOf("toolAnalysis")!=null){
btnAnalysis.setToolTipText(localeLanguage.getValueOf("toolAnalysis"));}
if(localeLanguage.getValueOf("toolNormal")!=null){
tbOldNormal.setToolTipText(localeLanguage.getValueOf("toolNormal"));
tbNewNormal.setToolTipText(localeLanguage.getValueOf("toolNormal"));}
if(localeLanguage.getValueOf("toolItems")!=null){
tbOldItems.setToolTipText(localeLanguage.getValueOf("toolItems"));
tbNewItems.setToolTipText(localeLanguage.getValueOf("toolItems"));}
if(localeLanguage.getValueOf("toolStrip")!=null){
tbOldStripAll.setToolTipText(localeLanguage.getValueOf("toolStrip"));
tbNewStripAll.setToolTipText(localeLanguage.getValueOf("toolStrip"));}
}
public enum Column{
ID(0), TYPE(1), LAYER(2), MARGINS(3), START(4),
END(5), TOTAL(6), STYLE(7), NAME(8), EFFECTS(9),
TEXT(10), FX(11);
private int id;
Column(int id){
this.id = id;
}
public int getId(){
return id;
}
}
public JInternalFrame getIfrFirstTable(){
return ifrFirstTable;
}
public JInternalFrame getIfrFirstReport(){
return ifrFirstReport;
}
public JInternalFrame getIfrSecondTable(){
return ifrSecondTable;
}
public JInternalFrame getIfrSecondReport(){
return ifrSecondReport;
}
private void updateChartPanel(JPanel chartPanel, List<Object> objectToAdd){
//Enlève tous les objets
chartPanel.removeAll();
//Création d'une scrollbar
final JScrollBar sb = new JScrollBar();
//Redimensionnement et configuration du panel conteneur
JPanel pcontainer = new JPanel(null);
pcontainer.setBackground(Color.white);
//Redimensionnement et configuration du panel cible
final JPanel ptarget = new JPanel(null);
ptarget.setSize(500, objectToAdd.size()*250);
//Configuration du panel source
chartPanel.setLayout(new BorderLayout());
chartPanel.add(sb, BorderLayout.EAST);
chartPanel.add(pcontainer, BorderLayout.CENTER);
//Configuration du panel conteneur
pcontainer.add(ptarget);
ptarget.addMouseWheelListener(new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
if(e.getWheelRotation()>0){
sb.setValue(sb.getValue()+100);
}else{
sb.setValue(sb.getValue()-100);
}
}
});
sb.setVisible(true);
sb.setMaximum(ptarget.getHeight());//(-spFirstData.getHeight()+20)
sb.addAdjustmentListener(new AdjustmentListener() {
@Override
public void adjustmentValueChanged(AdjustmentEvent e) {
ptarget.setLocation(0, -e.getValue());
}
});
//Ajout des éléments
int x = 0, y = 0;
for(Object o : objectToAdd){
if(o instanceof BarChart){
BarChart bc = (BarChart)o;
ptarget.add(bc);
bc.setLocation(x, y);
bc.setSize(500, 250);
y += 250;
}
if(o instanceof BarChart3D){
BarChart3D bc3D = (BarChart3D)o;
ptarget.add(bc3D);
bc3D.setLocation(x, y);
bc3D.setSize(500, 250);
y += 250;
}
if(o instanceof PieChart){
PieChart pc = (PieChart)o;
ptarget.add(pc);
pc.setLocation(x, y);
pc.setSize(500, 250);
y += 250;
}
if(o instanceof PieChart3D){
PieChart3D pc3D = (PieChart3D)o;
ptarget.add(pc3D);
pc3D.setLocation(x, y);
pc3D.setSize(500, 250);
y += 250;
}
}
}
//<editor-fold defaultstate="collapsed" desc=" Méthodes de comparaison et de recherche ">
private void compareBySentence(){
//On veut identifier les phrases en double (ou plus), c'est pour ça que
//l'on va utiliser des Map afin d'avoir comme clé les phrases et comme
//valeur leur nombre de fois dans le script
Map<String, Integer> firstMap = new HashMap<String, Integer>();
Map<String, Integer> secondMap = new HashMap<String, Integer>();
//Traitement - Crée un rapport des changements -------------------------
firstchartmap.clear(); secondchartmap.clear();
//----------------------------------------------------------------------
// On recherche les vieilles phrases
for(int i=0;i<firstModel.getRowCount();i++){
String firstSentence = (String)firstModel.getValueAt(i, 10);
String firstStyle = (String)firstModel.getValueAt(i, 7);
String firstName = (String)firstModel.getValueAt(i, 8);
String firstStart = (String)firstModel.getValueAt(i, 4);
String firstEnd = (String)firstModel.getValueAt(i, 5);
String firstTotal = (String)firstModel.getValueAt(i, 6);
LineChangeObject firstLCO = (LineChangeObject)firstModel.getValueAt(i, 11);
//Traitement - Nombre de fois dans le script -----------------------
if(firstMap.containsKey(firstSentence)){
//On trouve une clé identique, on extrait le nombre de fois
//puis on le modifie pour rerentrer la clé
int value = firstMap.get(firstSentence);
firstMap.put(firstSentence, value+1);
}else{
//On ne trouve pas cette clé, donc on l'ajoute
firstMap.put(firstSentence, 1);
}
//------------------------------------------------------------------
for(int j=0;j<secondModel.getRowCount();j++){
String secondSentence = (String)secondModel.getValueAt(j, 10);
String secondStyle = (String)secondModel.getValueAt(j, 7);
String secondName = (String)secondModel.getValueAt(j, 8);
String secondStart = (String)secondModel.getValueAt(j, 4);
String secondEnd = (String)secondModel.getValueAt(j, 5);
String secondTotal = (String)secondModel.getValueAt(j, 6);
LineChangeObject secondLCO = (LineChangeObject)secondModel.getValueAt(j, 11);
//Traitement - Nombre de fois dans le script -------------------
if(secondMap.containsKey(secondSentence)){
//On trouve une clé identique, on extrait le nombre de fois
//puis on le modifie pour rerentrer la clé
int value = secondMap.get(secondSentence);
secondMap.put(secondSentence, value+1);
}else{
//On ne trouve pas cette clé, donc on l'ajoute
secondMap.put(secondSentence, 1);
}
//--------------------------------------------------------------
// Si la phrase est la même que la phrase recherchée alors elle
// apparaît en double
if(firstSentence.equals(secondSentence)){
firstLCO.changeSentenceState(LineChangeObject.SentenceState.Double);
secondLCO.changeSentenceState(LineChangeObject.SentenceState.Double);
//Traitement - Crée un rapport des changements -------------
incrementChartMap(firstchartmap, "Same lines");
incrementChartMap(secondchartmap, "Same lines");
//----------------------------------------------------------
}
// Si la phrase est en double, on regarde si des choses ont changé ou pas
if(firstLCO.getSentenceState()==LineChangeObject.SentenceState.Double && firstLCO.getSentenceState()==secondLCO.getSentenceState()
&& firstMap.get(firstSentence)==secondMap.get(secondSentence) && firstSentence.equals(secondSentence)){
// Cas 1 : Le style est le même, on change rien
// Cas 2 : Le style a changé, on répercute les changements
if(firstStyle.equals(secondStyle)==false && firstLCO.getStyleState()==LineChangeObject.StyleState.Unchanged){
firstLCO.changeStyleState(LineChangeObject.StyleState.Old);
secondLCO.changeStyleState(LineChangeObject.StyleState.New);
//Traitement - Crée un rapport des changements ---------
incrementChartMap(firstchartmap, "Old styles");
incrementChartMap(secondchartmap, "New styles");
//------------------------------------------------------
}
// Cas 1 : Le nom est le même, on change rien
// Cas 2 : Le nom a changé, on répercute les changements
if(firstName.equals(secondName)==false && firstLCO.getNameState()==LineChangeObject.NameState.Unchanged){
firstLCO.changeNameState(LineChangeObject.NameState.Old);
secondLCO.changeNameState(LineChangeObject.NameState.New);
//Traitement - Crée un rapport des changements ---------
incrementChartMap(firstchartmap, "Old names");
incrementChartMap(secondchartmap, "New names");
//------------------------------------------------------
}
// Cas 1 : Le temps total n'a pas changé, ni début et fin, on fait rien
// Cas 2 : Le temps total n'a pas changé, sauf le début et la fin, on répercute un décalage
if(firstTotal.equals(secondTotal) && firstStart.equals(secondStart)==false && firstLCO.getTimeState()==LineChangeObject.TimeState.Unchanged){
firstLCO.changeTimeState(LineChangeObject.TimeState.Shift);
secondLCO.changeTimeState(LineChangeObject.TimeState.Shift);
//Traitement - Crée un rapport des changements ---------
incrementChartMap(firstchartmap, "Synch. shifts");
incrementChartMap(secondchartmap, "Synch. shifts");
//------------------------------------------------------
}
// Cas 3 : Le temps total a changé
if(firstTotal.equals(secondTotal)==false && firstLCO.getTimeState()==LineChangeObject.TimeState.Unchanged){
firstLCO.changeTimeState(LineChangeObject.TimeState.Old);
secondLCO.changeTimeState(LineChangeObject.TimeState.New);
//Traitement - Crée un rapport des changements ---------
incrementChartMap(firstchartmap, "Old synch.");
incrementChartMap(secondchartmap, "New synch.");
//------------------------------------------------------
}
}
secondModel.setValueAt(secondLCO, j, 11);
}
// Si la phrase recherché est encore au status sentence unknown alors
// c'est qu'elle est vieille et qu'elle a été supprimée dans le nouveau script
if(firstLCO.getSentenceState()==LineChangeObject.SentenceState.Unknown){
firstLCO.changeSentenceState(LineChangeObject.SentenceState.Deleted);
//Traitement - Crée un rapport des changements -----------------
incrementChartMap(firstchartmap, "Deleted lines");
//--------------------------------------------------------------
}
firstModel.setValueAt(firstLCO, i, 11);
//Initialise la seconde map (pour un bon recomptage)
secondMap.clear();
}
// On recherche les nouvelles phrases
for(int i=0;i<secondModel.getRowCount();i++){
LineChangeObject secondLCO = (LineChangeObject)secondModel.getValueAt(i, 11);
if(secondLCO.getSentenceState()==LineChangeObject.SentenceState.Unknown){
secondLCO.changeSentenceState(LineChangeObject.SentenceState.Added);
//Traitement - Crée un rapport des changements -----------------
incrementChartMap(secondchartmap, "Added lines");
//--------------------------------------------------------------
}
secondModel.setValueAt(secondLCO, i, 11);
}
firstTable.repaint();
secondTable.repaint();
firstTable.updateUI();
secondTable.updateUI();
}
private void compareByStartTime(){
//On veut identifier les temps en double (ou plus), c'est pour ça que
//l'on va utiliser des Map afin d'avoir comme clé les temps et comme
//valeur leur nombre de fois dans le script
Map<String, Integer> firstMap = new HashMap<String, Integer>();
Map<String, Integer> secondMap = new HashMap<String, Integer>();
//Traitement - Crée un rapport des changements -------------------------
firstchartmap.clear(); secondchartmap.clear();
//----------------------------------------------------------------------
// On recherche les vieilles phrases
for(int i=0;i<firstModel.getRowCount();i++){
String firstSentence = (String)firstModel.getValueAt(i, 10);
String firstStyle = (String)firstModel.getValueAt(i, 7);
String firstName = (String)firstModel.getValueAt(i, 8);
String firstStart = (String)firstModel.getValueAt(i, 4);
String firstEnd = (String)firstModel.getValueAt(i, 5);
String firstTotal = (String)firstModel.getValueAt(i, 6);
LineChangeObject firstLCO = (LineChangeObject)firstModel.getValueAt(i, 11);
//Traitement - Nombre de fois dans le script -----------------------
if(firstMap.containsKey(firstStart)){
//On trouve une clé identique, on extrait le nombre de fois
//puis on le modifie pour rerentrer la clé
int value = firstMap.get(firstStart);
firstMap.put(firstStart, value+1);
}else{
//On ne trouve pas cette clé, donc on l'ajoute
firstMap.put(firstStart, 1);
}
//------------------------------------------------------------------
for(int j=0;j<secondModel.getRowCount();j++){
String secondSentence = (String)secondModel.getValueAt(j, 10);
String secondStyle = (String)secondModel.getValueAt(j, 7);
String secondName = (String)secondModel.getValueAt(j, 8);
String secondStart = (String)secondModel.getValueAt(j, 4);
String secondEnd = (String)secondModel.getValueAt(j, 5);
String secondTotal = (String)secondModel.getValueAt(j, 6);
LineChangeObject secondLCO = (LineChangeObject)secondModel.getValueAt(j, 11);
//Traitement - Nombre de fois dans le script -------------------
if(secondMap.containsKey(secondStart)){
//On trouve une clé identique, on extrait le nombre de fois
//puis on le modifie pour rerentrer la clé
int value = secondMap.get(secondStart);
secondMap.put(secondStart, value+1);
}else{
//On ne trouve pas cette clé, donc on l'ajoute
secondMap.put(secondStart, 1);
}
//--------------------------------------------------------------
// Si le temps est la même que la phrase recherchée alors elle
// apparaît en double
if(firstStart.equals(secondStart) && firstEnd.equals(secondEnd)){
firstLCO.changeTimeState(LineChangeObject.TimeState.Double);
secondLCO.changeTimeState(LineChangeObject.TimeState.Double);
//Traitement - Crée un rapport des changements -------------
incrementChartMap(firstchartmap, "Same synch.");
incrementChartMap(secondchartmap, "Same synch.");
//----------------------------------------------------------
}
// Si la phrase est en double, on regarde si des choses ont changé ou pas
if(firstLCO.getTimeState()==LineChangeObject.TimeState.Double && firstLCO.getTimeState()==secondLCO.getTimeState()
&& firstMap.get(firstStart)==secondMap.get(secondStart) && firstStart.equals(secondStart) && firstEnd.equals(secondEnd)){
// Cas 1 : Le style est le même, on change rien
// Cas 2 : Le style a changé, on répercute les changements
if(firstStyle.equals(secondStyle)==false && firstLCO.getStyleState()==LineChangeObject.StyleState.Unchanged){
firstLCO.changeStyleState(LineChangeObject.StyleState.Old);
secondLCO.changeStyleState(LineChangeObject.StyleState.New);
//Traitement - Crée un rapport des changements ---------
incrementChartMap(firstchartmap, "Old styles");
incrementChartMap(secondchartmap, "New styles");
//------------------------------------------------------
}
// Cas 1 : Le nom est le même, on change rien
// Cas 2 : Le nom a changé, on répercute les changements
if(firstName.equals(secondName)==false && firstLCO.getNameState()==LineChangeObject.NameState.Unchanged){
firstLCO.changeNameState(LineChangeObject.NameState.Old);
secondLCO.changeNameState(LineChangeObject.NameState.New);
//Traitement - Crée un rapport des changements ---------
incrementChartMap(firstchartmap, "Old names");
incrementChartMap(secondchartmap, "New names");
//------------------------------------------------------
}
// Cas 1 : La phrase n'a pas changé, on ne fait rien
// Cas 2 : La phrase a changé, on répercute ce changement
if(firstSentence.equals(secondSentence)==false && firstLCO.getSentenceState()==LineChangeObject.SentenceState.Unknown){
firstLCO.changeSentenceState(LineChangeObject.SentenceState.Deleted);
secondLCO.changeSentenceState(LineChangeObject.SentenceState.Added);
//Traitement - Crée un rapport des changements ---------
incrementChartMap(firstchartmap, "Deleted lines");
incrementChartMap(secondchartmap, "Added lines");
//------------------------------------------------------
}
}
secondModel.setValueAt(secondLCO, j, 11);
}
// Si le temps recherché est encore au status sentence unchanged alors
// c'est qu'il est vieux et qu'il a été supprimé dans le nouveau script
if(firstLCO.getTimeState()==LineChangeObject.TimeState.Unchanged){
firstLCO.changeTimeState(LineChangeObject.TimeState.Old);
//Traitement - Crée un rapport des changements -----------------
incrementChartMap(firstchartmap, "Old synch.");
//--------------------------------------------------------------
}
firstModel.setValueAt(firstLCO, i, 11);
//Initialise la seconde map (pour un bon recomptage)
secondMap.clear();
}
// On recherche les nouveaux temps
for(int i=0;i<secondModel.getRowCount();i++){
LineChangeObject secondLCO = (LineChangeObject)secondModel.getValueAt(i, 11);
if(secondLCO.getTimeState()==LineChangeObject.TimeState.Unchanged){
secondLCO.changeTimeState(LineChangeObject.TimeState.New);
//Traitement - Crée un rapport des changements -----------------
incrementChartMap(secondchartmap, "New synch.");
//--------------------------------------------------------------
}
secondModel.setValueAt(secondLCO, i, 11);
}
firstTable.repaint();
secondTable.repaint();
firstTable.updateUI();
secondTable.updateUI();
}
private void incrementChartMap(Map<String, Integer> chartmap, String key){
if(chartmap.containsKey(key)){
//On trouve une clé identique, on extrait le nombre de fois
//puis on le modifie pour rerentrer la clé
int kvalue = chartmap.get(key);
chartmap.put(key, kvalue+1);
}else{
//On ne trouve pas cette clé, donc on l'ajoute
chartmap.put(key, 1);
}
}
private Map<String, Integer> searchForWord(String word){
Map<String, Integer> map = new HashMap<String, Integer>();
for(int i=0;i<firstModel.getRowCount();i++){
String firstSentence = (String)firstModel.getValueAt(i, 10);
if(firstSentence.contains(word)){
Pattern p = Pattern.compile("\\s"+word+"\\s");
Matcher m = p.matcher(firstSentence);
while(m.find()){
incrementChartMap(map, "Before");
}
}
}
for(int i=0;i<secondModel.getRowCount();i++){
String secondSentence = (String)secondModel.getValueAt(i, 10);
if(secondSentence.contains(word)){
Pattern p = Pattern.compile("\\s"+word+"\\s");
Matcher m = p.matcher(secondSentence);
while(m.find()){
incrementChartMap(map, "After");
}
}
}
return map;
}
//</editor-fold>
private void setupLineChangeObject(){
for(int i=0;i<firstModel.getRowCount();i++){
Object o = firstModel.getValueAt(i, 11);
if(o.getClass() != LineChangeObject.class){
firstModel.setValueAt(new LineChangeObject(), i, 11);
}
}
for(int i=0;i<secondModel.getRowCount();i++){
Object o = secondModel.getValueAt(i, 11);
if(o.getClass() != LineChangeObject.class){
secondModel.setValueAt(new LineChangeObject(), i, 11);
}
}
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
bgOld = new javax.swing.ButtonGroup();
bgNew = new javax.swing.ButtonGroup();
fcASS = new javax.swing.JFileChooser();
jDesktopPane1 = new javax.swing.JDesktopPane();
ifrFirstTable = new javax.swing.JInternalFrame();
jToolBar1 = new javax.swing.JToolBar();
btnOpenOld = new javax.swing.JButton();
btnAnalysis = new javax.swing.JButton();
jSeparator1 = new javax.swing.JToolBar.Separator();
tbOldNormal = new javax.swing.JToggleButton();
tbOldItems = new javax.swing.JToggleButton();
tbOldStripAll = new javax.swing.JToggleButton();
jScrollPane1 = new javax.swing.JScrollPane();
firstTable = new javax.swing.JTable();
ifrSecondTable = new javax.swing.JInternalFrame();
jToolBar2 = new javax.swing.JToolBar();
btnOpenNew = new javax.swing.JButton();
jSeparator2 = new javax.swing.JToolBar.Separator();
tbNewNormal = new javax.swing.JToggleButton();
tbNewItems = new javax.swing.JToggleButton();
tbNewStripAll = new javax.swing.JToggleButton();
jScrollPane2 = new javax.swing.JScrollPane();
secondTable = new javax.swing.JTable();
ifrFirstReport = new javax.swing.JInternalFrame();
firstChartPanel = new javax.swing.JPanel();
ifrSecondReport = new javax.swing.JInternalFrame();
secondChartPanel = new javax.swing.JPanel();
ifrFirstTable.setIconifiable(true);
ifrFirstTable.setMaximizable(true);
ifrFirstTable.setResizable(true);
ifrFirstTable.setTitle("Ancient");
ifrFirstTable.setVisible(true);
jToolBar1.setFloatable(false);
jToolBar1.setRollover(true);
btnOpenOld.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/32px-Crystal_Clear_filesystem_folder_grey_open.png"))); // NOI18N
btnOpenOld.setFocusable(false);
btnOpenOld.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnOpenOld.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnOpenOld.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnOpenOldActionPerformed(evt);
}
});
jToolBar1.add(btnOpenOld);
btnAnalysis.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/32px-Crystal_Clear_app_kdvi.png"))); // NOI18N
btnAnalysis.setFocusable(false);
btnAnalysis.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnAnalysis.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnAnalysis.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAnalysisActionPerformed(evt);
}
});
jToolBar1.add(btnAnalysis);
jToolBar1.add(jSeparator1);
bgOld.add(tbOldNormal);
tbOldNormal.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-NormalMode.png"))); // NOI18N
tbOldNormal.setSelected(true);
tbOldNormal.setFocusable(false);
tbOldNormal.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
tbOldNormal.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
tbOldNormal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tbOldNormalActionPerformed(evt);
}
});
jToolBar1.add(tbOldNormal);
bgOld.add(tbOldItems);
tbOldItems.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-ItemsMode.png"))); // NOI18N
tbOldItems.setFocusable(false);
tbOldItems.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
tbOldItems.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
tbOldItems.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tbOldItemsActionPerformed(evt);
}
});
jToolBar1.add(tbOldItems);
bgOld.add(tbOldStripAll);
tbOldStripAll.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-StripMode.png"))); // NOI18N
tbOldStripAll.setFocusable(false);
tbOldStripAll.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
tbOldStripAll.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
tbOldStripAll.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tbOldStripAllActionPerformed(evt);
}
});
jToolBar1.add(tbOldStripAll);
jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
firstTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(firstTable);
javax.swing.GroupLayout ifrFirstTableLayout = new javax.swing.GroupLayout(ifrFirstTable.getContentPane());
ifrFirstTable.getContentPane().setLayout(ifrFirstTableLayout);
ifrFirstTableLayout.setHorizontalGroup(
ifrFirstTableLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 474, Short.MAX_VALUE)
);
ifrFirstTableLayout.setVerticalGroup(
ifrFirstTableLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(ifrFirstTableLayout.createSequentialGroup()
.addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 143, Short.MAX_VALUE))
);
jDesktopPane1.add(ifrFirstTable);
ifrFirstTable.setBounds(10, 10, 490, 220);
ifrSecondTable.setIconifiable(true);
ifrSecondTable.setMaximizable(true);
ifrSecondTable.setResizable(true);
ifrSecondTable.setTitle("Nouveau");
ifrSecondTable.setVisible(true);
jToolBar2.setFloatable(false);
jToolBar2.setRollover(true);
btnOpenNew.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/32px-Crystal_Clear_filesystem_folder_grey_open.png"))); // NOI18N
btnOpenNew.setFocusable(false);
btnOpenNew.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnOpenNew.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
btnOpenNew.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnOpenNewActionPerformed(evt);
}
});
jToolBar2.add(btnOpenNew);
jToolBar2.add(jSeparator2);
bgNew.add(tbNewNormal);
tbNewNormal.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-NormalMode.png"))); // NOI18N
tbNewNormal.setSelected(true);
tbNewNormal.setFocusable(false);
tbNewNormal.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
tbNewNormal.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
tbNewNormal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tbNewNormalActionPerformed(evt);
}
});
jToolBar2.add(tbNewNormal);
bgNew.add(tbNewItems);
tbNewItems.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-ItemsMode.png"))); // NOI18N
tbNewItems.setFocusable(false);
tbNewItems.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
tbNewItems.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
tbNewItems.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tbNewItemsActionPerformed(evt);
}
});
jToolBar2.add(tbNewItems);
bgNew.add(tbNewStripAll);
tbNewStripAll.setIcon(new javax.swing.ImageIcon(getClass().getResource("/feuille/images/AFM-StripMode.png"))); // NOI18N
tbNewStripAll.setFocusable(false);
tbNewStripAll.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
tbNewStripAll.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
tbNewStripAll.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tbNewStripAllActionPerformed(evt);
}
});
jToolBar2.add(tbNewStripAll);
jScrollPane2.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
secondTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane2.setViewportView(secondTable);
javax.swing.GroupLayout ifrSecondTableLayout = new javax.swing.GroupLayout(ifrSecondTable.getContentPane());
ifrSecondTable.getContentPane().setLayout(ifrSecondTableLayout);
ifrSecondTableLayout.setHorizontalGroup(
ifrSecondTableLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jToolBar2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 474, Short.MAX_VALUE)
);
ifrSecondTableLayout.setVerticalGroup(
ifrSecondTableLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(ifrSecondTableLayout.createSequentialGroup()
.addComponent(jToolBar2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 133, Short.MAX_VALUE))
);
jDesktopPane1.add(ifrSecondTable);
ifrSecondTable.setBounds(10, 240, 490, 210);
ifrFirstReport.setIconifiable(true);
ifrFirstReport.setMaximizable(true);
ifrFirstReport.setResizable(true);
ifrFirstReport.setTitle("Avant");
ifrFirstReport.setVisible(true);
javax.swing.GroupLayout firstChartPanelLayout = new javax.swing.GroupLayout(firstChartPanel);
firstChartPanel.setLayout(firstChartPanelLayout);
firstChartPanelLayout.setHorizontalGroup(
firstChartPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 514, Short.MAX_VALUE)
);
firstChartPanelLayout.setVerticalGroup(
firstChartPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 191, Short.MAX_VALUE)
);
javax.swing.GroupLayout ifrFirstReportLayout = new javax.swing.GroupLayout(ifrFirstReport.getContentPane());
ifrFirstReport.getContentPane().setLayout(ifrFirstReportLayout);
ifrFirstReportLayout.setHorizontalGroup(
ifrFirstReportLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(firstChartPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
ifrFirstReportLayout.setVerticalGroup(
ifrFirstReportLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(firstChartPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
jDesktopPane1.add(ifrFirstReport);
ifrFirstReport.setBounds(510, 10, 530, 220);
ifrSecondReport.setIconifiable(true);
ifrSecondReport.setMaximizable(true);
ifrSecondReport.setResizable(true);
ifrSecondReport.setTitle("Après");
ifrSecondReport.setVisible(true);
javax.swing.GroupLayout secondChartPanelLayout = new javax.swing.GroupLayout(secondChartPanel);
secondChartPanel.setLayout(secondChartPanelLayout);
secondChartPanelLayout.setHorizontalGroup(
secondChartPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 514, Short.MAX_VALUE)
);
secondChartPanelLayout.setVerticalGroup(
secondChartPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 181, Short.MAX_VALUE)
);
javax.swing.GroupLayout ifrSecondReportLayout = new javax.swing.GroupLayout(ifrSecondReport.getContentPane());
ifrSecondReport.getContentPane().setLayout(ifrSecondReportLayout);
ifrSecondReportLayout.setHorizontalGroup(
ifrSecondReportLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(secondChartPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
ifrSecondReportLayout.setVerticalGroup(
ifrSecondReportLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(secondChartPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
jDesktopPane1.add(ifrSecondReport);
ifrSecondReport.setBounds(510, 240, 530, 210);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jDesktopPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 1053, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jDesktopPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 654, Short.MAX_VALUE)
);
}// </editor-fold>//GEN-END:initComponents
private void tbOldNormalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tbOldNormalActionPerformed
firstCR.setTextType(CompareRenderer.TextType.Normal);
firstTable.updateUI();
}//GEN-LAST:event_tbOldNormalActionPerformed
private void tbOldItemsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tbOldItemsActionPerformed
firstCR.setTextType(CompareRenderer.TextType.WithItems);
firstTable.updateUI();
}//GEN-LAST:event_tbOldItemsActionPerformed
private void tbOldStripAllActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tbOldStripAllActionPerformed
firstCR.setTextType(CompareRenderer.TextType.StripAll);
firstTable.updateUI();
}//GEN-LAST:event_tbOldStripAllActionPerformed
private void tbNewNormalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tbNewNormalActionPerformed
secondCR.setTextType(CompareRenderer.TextType.Normal);
secondTable.updateUI();
}//GEN-LAST:event_tbNewNormalActionPerformed
private void tbNewItemsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tbNewItemsActionPerformed
secondCR.setTextType(CompareRenderer.TextType.WithItems);
secondTable.updateUI();
}//GEN-LAST:event_tbNewItemsActionPerformed
private void tbNewStripAllActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tbNewStripAllActionPerformed
secondCR.setTextType(CompareRenderer.TextType.StripAll);
secondTable.updateUI();
}//GEN-LAST:event_tbNewStripAllActionPerformed
private void btnOpenOldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOpenOldActionPerformed
//Effacage du tableau
try{
for (int i=firstModel.getRowCount()-1;i>=0;i--){
firstModel.removeRow(i);
}
firstSubList.clear();
//vlc.setSubLists(firstSubList, secondSubList);
}catch(Exception exc){}
//Remplissage du tableau
for (FileFilter f : fcASS.getChoosableFileFilters()){
fcASS.removeChoosableFileFilter(f);
}
fcASS.addChoosableFileFilter(new SubtitleFilter());
fcASS.setAccessory(null);
int z = this.fcASS.showOpenDialog(this);
if (z == javax.swing.JFileChooser.APPROVE_OPTION){
firstStyleCollection = new AssStyleCollection();
// Open file
if(fcASS.getSelectedFile().getName().endsWith("ssa")){
AssIO aio = new AssIO();
aio.LireFichierSSAi2(fcASS.getSelectedFile().getAbsolutePath(),
firstModel,firstInfos,firstStyleCollection,firstNameCollection,false);
aio.LireFichierSSAi2_Minimal(fcASS.getSelectedFile().getAbsolutePath(), firstSubList);
//setFirstInfos();
}
if(fcASS.getSelectedFile().getName().endsWith("ass")){
AssIO aio = new AssIO();
aio.LireFichierASSi2(fcASS.getSelectedFile().getAbsolutePath(),
firstModel,firstInfos,firstStyleCollection,firstNameCollection,false);
aio.LireFichierASSi2_Minimal(fcASS.getSelectedFile().getAbsolutePath(), firstSubList);
//setFirstInfos();
}
}
}//GEN-LAST:event_btnOpenOldActionPerformed
private void btnOpenNewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOpenNewActionPerformed
//Effacage du tableau
try{
for (int i=secondModel.getRowCount()-1;i>=0;i--){
secondModel.removeRow(i);
}
secondSubList.clear();
//vlc.setSubLists(firstSubList, secondSubList);
}catch(Exception exc){}
//Remplissage du tableau
for (FileFilter f : fcASS.getChoosableFileFilters()){
fcASS.removeChoosableFileFilter(f);
}
fcASS.addChoosableFileFilter(new SubtitleFilter());
fcASS.setAccessory(null);
int z = this.fcASS.showOpenDialog(this);
if (z == javax.swing.JFileChooser.APPROVE_OPTION){
secondStyleCollection = new AssStyleCollection();
// Open file
if(fcASS.getSelectedFile().getName().endsWith("ssa")){
AssIO aio = new AssIO();
aio.LireFichierSSAi2(fcASS.getSelectedFile().getAbsolutePath(),
secondModel,secondInfos,secondStyleCollection,secondNameCollection,false);
aio.LireFichierSSAi2_Minimal(fcASS.getSelectedFile().getAbsolutePath(), secondSubList);
//setSecondInfos();
}
if(fcASS.getSelectedFile().getName().endsWith("ass")){
AssIO aio = new AssIO();
aio.LireFichierASSi2(fcASS.getSelectedFile().getAbsolutePath(),
secondModel,secondInfos,secondStyleCollection,secondNameCollection,false);
aio.LireFichierASSi2_Minimal(fcASS.getSelectedFile().getAbsolutePath(), secondSubList);
//setSecondInfos();
}
}
}//GEN-LAST:event_btnOpenNewActionPerformed
private void btnAnalysisActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAnalysisActionPerformed
AnalyzeDialog ad = new AnalyzeDialog(frame, true);
ad.setLocationRelativeTo(null);
boolean value = ad.showDialog();
if(value==true){
List<Object> lFirstObjects = new ArrayList<Object>();
List<Object> lSecondObjects = new ArrayList<Object>();
setupLineChangeObject();
if(ad.compareBySentence()==true){
compareBySentence();
if(ad.makeBarChart()==true){
lFirstObjects.add(new BarChart3D("Old ASS", firstchartmap));
lSecondObjects.add(new BarChart3D("New ASS", secondchartmap));
}
if(ad.makePieChart()==true){
lFirstObjects.add(new PieChart3D("Old ASS", firstchartmap));
lSecondObjects.add(new PieChart3D("New ASS", secondchartmap));
}
}else if(ad.compareByTime()==true){
compareByStartTime();
if(ad.makeBarChart()==true){
lFirstObjects.add(new BarChart3D("Old ASS", firstchartmap));
lSecondObjects.add(new BarChart3D("New ASS", secondchartmap));
}
if(ad.makePieChart()==true){
lFirstObjects.add(new PieChart3D("Old ASS", firstchartmap));
lSecondObjects.add(new PieChart3D("New ASS", secondchartmap));
}
}else if(ad.compareByStyle()==true){
}
if(ad.makeWords()==true){
List<String> words = ad.getWords();
List<Map<String, Integer>> wordsList = new ArrayList<Map<String, Integer>>();
for(String word : words){
Map<String, Integer> map = searchForWord(word);
wordsList.add(map);
}
if(ad.makeBarChart()){
int index = 0;
for(Map map : wordsList){
lSecondObjects.add(new BarChart3D("The \""+ words.get(index) +"\" word", map));
index += 1;
}
}
if(ad.makePieChart()){
int index = 0;
for(Map map : wordsList){
lSecondObjects.add(new PieChart3D("The \""+ words.get(index) +"\" word", map));
index += 1;
}
}
}
updateChartPanel(firstChartPanel, lFirstObjects);
updateChartPanel(secondChartPanel, lSecondObjects);
}
}//GEN-LAST:event_btnAnalysisActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.ButtonGroup bgNew;
private javax.swing.ButtonGroup bgOld;
private javax.swing.JButton btnAnalysis;
private javax.swing.JButton btnOpenNew;
private javax.swing.JButton btnOpenOld;
private javax.swing.JFileChooser fcASS;
private javax.swing.JPanel firstChartPanel;
private javax.swing.JTable firstTable;
private javax.swing.JInternalFrame ifrFirstReport;
private javax.swing.JInternalFrame ifrFirstTable;
private javax.swing.JInternalFrame ifrSecondReport;
private javax.swing.JInternalFrame ifrSecondTable;
private javax.swing.JDesktopPane jDesktopPane1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JToolBar.Separator jSeparator1;
private javax.swing.JToolBar.Separator jSeparator2;
private javax.swing.JToolBar jToolBar1;
private javax.swing.JToolBar jToolBar2;
private javax.swing.JPanel secondChartPanel;
private javax.swing.JTable secondTable;
private javax.swing.JToggleButton tbNewItems;
private javax.swing.JToggleButton tbNewNormal;
private javax.swing.JToggleButton tbNewStripAll;
private javax.swing.JToggleButton tbOldItems;
private javax.swing.JToggleButton tbOldNormal;
private javax.swing.JToggleButton tbOldStripAll;
// End of variables declaration//GEN-END:variables
}