analyseWriter/src/app/attributs.java

342 lines
15 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package app;
import java.awt.BorderLayout;
import java.awt.Component;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import cXML.node;
import java.awt.FlowLayout;
import java.util.ArrayList;
import java.util.Enumeration;
import net.miginfocom.swing.MigLayout;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import java.awt.Font;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.FocusManager;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.ActionEvent;
import javax.swing.ImageIcon;
import java.awt.GridLayout;
public class attributs extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel contentPane;
node nod;
afficheText J;
int indexSelect=0;
ArrayList<JLabel> Leslabels = new ArrayList<JLabel>();
ArrayList<JTextField> Lesvaleurs = new ArrayList<JTextField>();
ArrayList<JCheckBox> Lesevaluer = new ArrayList<JCheckBox>();
ArrayList<JTextField> Lespoints = new ArrayList<JTextField>();
/**
* Create the frame.
*/
public attributs(node nod, afficheText J) {
this.nod=nod;
this.J=J;
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(100, 100, 806, 669);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
JPanel panelGauche = new JPanel();
contentPane.add(panelGauche, BorderLayout.WEST);
JPanel panelHaut = new JPanel();
contentPane.add(panelHaut, BorderLayout.NORTH);
JLabel lblNomNode = new JLabel(nod.getNomElt());
lblNomNode.setFont(new Font("Tahoma", Font.BOLD, 14));
panelHaut.add(lblNomNode);
JPanel panelBas = new JPanel();
contentPane.add(panelBas, BorderLayout.SOUTH);
panelBas.setLayout(new FlowLayout(FlowLayout.RIGHT, 5, 5));
JButton btnNewButton = new JButton("Valider");
panelBas.add(btnNewButton);
JPanel panelDroite = new JPanel();
contentPane.add(panelDroite, BorderLayout.EAST);
JButton btnIntervalle = new JButton("Intervalle");
btnIntervalle.setToolTipText("Intervalle entre deux valeurs numériques.");
btnIntervalle.setIcon(new ImageIcon(attributs.class.getResource("/resources/intervallemini.png")));
btnIntervalle.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int j = Lesvaleurs.get(indexSelect).getCaretPosition();
System.out.println("position du cursor "+ j);
String newValue = Lesvaleurs.get(indexSelect).getText().substring(0, j) + "" + Lesvaleurs.get(indexSelect).getText().substring(j, Lesvaleurs.get(indexSelect).getText().length());
Lesvaleurs.get(indexSelect).setText(newValue);
}
});
panelDroite.setLayout(new GridLayout(12, 1, 0, 0));
panelDroite.add(btnIntervalle);
JButton btnTextClean = new JButton("Text clean");
btnTextClean.setToolTipText("<html>Texte nettoyé de tous les caractères spéciaux, chiffres et ignore la casse (équivalent à allContent=\"environ\").<br>Cette fonction ne peut pas être combinée avec les autres fonctions ci-dessous.<br>Ce n'est pas un opérateur OU contrairement à l'opérateur ↕.<br>La tolérance de texte (79% de similitude avec le texte de la consigne) paramètre dans les setting. (exemple : ¢‽2) </html>");
btnTextClean.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int j = Lesvaleurs.get(indexSelect).getCaretPosition();
System.out.println("position du cursor "+ j);
Lesvaleurs.get(indexSelect).setText(Lesvaleurs.get(indexSelect).getText() + "¢");
}
});
btnTextClean.setIcon(new ImageIcon(attributs.class.getResource("/resources/textcleanmini.png")));
panelDroite.add(btnTextClean);
JButton btnOuStrict = new JButton("OU Strict");
btnOuStrict.setToolTipText("<html>Fonction OU texte exact (sans traitement).<br>Cette fonction ne peut pas être combinée avec les autres fonctions OU.<br>Cette fonction peut être combinée avec la fonction ET.</html>");
btnOuStrict.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int j = Lesvaleurs.get(indexSelect).getCaretPosition();
System.out.println("position du cursor "+ j);
String newValue = Lesvaleurs.get(indexSelect).getText().substring(0, j) + "¦" + Lesvaleurs.get(indexSelect).getText().substring(j, Lesvaleurs.get(indexSelect).getText().length());
Lesvaleurs.get(indexSelect).setText(newValue);
}
});
btnOuStrict.setIcon(new ImageIcon(attributs.class.getResource("/resources/oustrictmini.png")));
panelDroite.add(btnOuStrict);
JButton btnOuStrictSEps = new JButton("OU Strict s.esp");
btnOuStrictSEps.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int j = Lesvaleurs.get(indexSelect).getCaretPosition();
System.out.println("position du cursor "+ j);
String newValue = Lesvaleurs.get(indexSelect).getText().substring(0, j) + "" + Lesvaleurs.get(indexSelect).getText().substring(j, Lesvaleurs.get(indexSelect).getText().length());
Lesvaleurs.get(indexSelect).setText(newValue);
}
});
btnOuStrictSEps.setIcon(new ImageIcon(attributs.class.getResource("/resources/oustrictsepsmini.png")));
btnOuStrictSEps.setToolTipText("<html>Fonction OU texte exact sans les espaces.<br>Cette fonction ne peut pas être combinée avec les autres fonctions OU.</html>");
panelDroite.add(btnOuStrictSEps);
JButton btnOUEnviron = new JButton("OU Environ");
btnOUEnviron.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int j = Lesvaleurs.get(indexSelect).getCaretPosition();
System.out.println("position du cursor "+ j);
String newValue = Lesvaleurs.get(indexSelect).getText().substring(0, j) + "" + Lesvaleurs.get(indexSelect).getText().substring(j, Lesvaleurs.get(indexSelect).getText().length());
Lesvaleurs.get(indexSelect).setText(newValue);
}
});
btnOUEnviron.setIcon(new ImageIcon(attributs.class.getResource("/resources/ouenvironmini.png")));
btnOUEnviron.setToolTipText("<html>Fonction OU, texte nettoyé des caractères spéciaux, chiffres, ignore la CASE MAIS SANS SIMILITUDE de texte. <br>Cette fonction ne peut pas être combinée avec les autres fonctions OU.</html>");
panelDroite.add(btnOUEnviron);
JButton btnOUEnvironSimilitude = new JButton("OU Env. Sim.");
btnOUEnvironSimilitude.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int j = Lesvaleurs.get(indexSelect).getCaretPosition();
System.out.println("position du cursor "+ j);
String newValue = Lesvaleurs.get(indexSelect).getText().substring(0, j) + "" + Lesvaleurs.get(indexSelect).getText().substring(j, Lesvaleurs.get(indexSelect).getText().length());
Lesvaleurs.get(indexSelect).setText(newValue);
}
});
btnOUEnvironSimilitude.setToolTipText("<html>Fonction OU texte nettoyé des caractères spéciaux, chiffres et similitude de texte. <br>Cette fonction ne peut pas être combinée avec les autres fonctions OU.<br>La tolérance de texte (79% de similitude avec le texte de la consigne) paramètre dans les setting.</html>");
btnOUEnvironSimilitude.setIcon(new ImageIcon(attributs.class.getResource("/resources/ouenvironsimilitudemini.png")));
panelDroite.add(btnOUEnvironSimilitude);
JButton btnET = new JButton("ET contient text");
btnET.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int j = Lesvaleurs.get(indexSelect).getCaretPosition();
System.out.println("position du cursor "+ j);
String newValue = Lesvaleurs.get(indexSelect).getText().substring(0, j) + "×" + Lesvaleurs.get(indexSelect).getText().substring(j, Lesvaleurs.get(indexSelect).getText().length());
Lesvaleurs.get(indexSelect).setText(newValue);
}
});
btnET.setToolTipText("<html>Fonction ET contient le texte.<br>Ensemble des textes qui doivent être contenu dans la valeur de l'attribut ou le contenu du node.</html>");
btnET.setIcon(new ImageIcon(attributs.class.getResource("/resources/etmini.png")));
panelDroite.add(btnET);
JButton btnTouText = new JButton("Tout text");
btnTouText.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int j = Lesvaleurs.get(indexSelect).getCaretPosition();
System.out.println("position du cursor "+ j);
Lesvaleurs.get(indexSelect).setText(Lesvaleurs.get(indexSelect).getText() + "");
}
});
btnTouText.setIcon(new ImageIcon(attributs.class.getResource("/resources/toutextmini.png")));
btnTouText.setToolTipText("<html>N'importe quel texte mais pas null, ou pas la valeur none ou pas vide.<br>Toutes les autres fonctions sont ignorées.</html>");
panelDroite.add(btnTouText);
JScrollPane scrollPaneCentre = new JScrollPane();
contentPane.add(scrollPaneCentre, BorderLayout.CENTER);
JPanel panelCentre = new JPanel();
scrollPaneCentre.setViewportView(panelCentre);
panelCentre.setLayout(new MigLayout("", "[100px:n,grow][150px:n,grow 150][::80px][80px:n]", "[::20px][::20px][::20px][::20px][::20px][::20px][::20px][::20px][::20px][::20px][::20px][::20px][::20px][::20px][::20px][::20px][::20px][::20px][::20px][::20px][::20px][::20px]"));
JLabel lblNewLabel = new JLabel("Nom attribut");
lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 11));
panelCentre.add(lblNewLabel, "cell 0 0");
JLabel lblNewLabel_1 = new JLabel("Valeurs");
lblNewLabel_1.setFont(new Font("Tahoma", Font.BOLD, 11));
panelCentre.add(lblNewLabel_1, "flowx,cell 1 0");
JLabel lblNewLabel_2 = new JLabel("Evaluer");
lblNewLabel_2.setFont(new Font("Tahoma", Font.BOLD, 11));
panelCentre.add(lblNewLabel_2, "cell 2 0");
JLabel lblNewLabel_3 = new JLabel("Point(s)");
lblNewLabel_3.setFont(new Font("Tahoma", Font.BOLD, 11));
panelCentre.add(lblNewLabel_3, "cell 3 0,alignx left");
Enumeration<String> key = nod.getAttributs().keys();
while(key.hasMoreElements()) {
String k = key.nextElement();
if(!listeAttributsAnalyseWriter.isAttributAnalyseWriter(k)) {
String value = nod.getAttributs().get(k);
String point = "0";
JCheckBox checkEval = new JCheckBox();
boolean evaluer = false;
if(value.contains("")||value.contains("")) {
evaluer=true;
if(value.contains("")) {
point = value.substring(value.lastIndexOf("")+1,value.length());
value = value.substring(0,value.lastIndexOf(""));
}
if(value.contains("")) {
point = value.substring(value.lastIndexOf("")+1,value.length());
value = value.substring(0,value.lastIndexOf(""));
}
}
JTextField txtFielPoints = new JTextField(point);
JTextField txtFielValue = new JTextField(value);
txtFielValue.addMouseListener(new MyMouseListener());
txtFielPoints.setColumns(3);
checkEval.setSelected(evaluer);
Leslabels.add(new JLabel(k));
Lesvaleurs.add(txtFielValue);
Lespoints.add(txtFielPoints);
Lesevaluer.add(checkEval);
}
}
//Placement dans le panel des informations
for(int i = 0 ; i<Leslabels.size();i++) {
Leslabels.get(i).setFont(new Font("Tahoma", Font.BOLD, 11));
Lesvaleurs.get(i).setColumns(10);
panelCentre.add(Leslabels.get(i), "cell 0 "+i+1);
panelCentre.add(Lesvaleurs.get(i), "cell 1 "+i+1 + ",grow");
panelCentre.add(Lesevaluer.get(i), "cell 2 "+i+1);
panelCentre.add(Lespoints.get(i), "cell 3 " + i+1 +",alignx left,growy");
}
//Enabled false les valeurs ne peuvente être modifiée
for(int i = 0 ; i<Leslabels.size();i++) {
if(Leslabels.get(i).getText().equals("style:name")) {Lesvaleurs.get(i).setEnabled(false);}
if(Leslabels.get(i).getText().equals("style:display-name")) {Lesvaleurs.get(i).setEnabled(false);}
if(Leslabels.get(i).getText().equals("style:next-style-name")) {Lesvaleurs.get(i).setEnabled(false);}
if(Leslabels.get(i).getText().equals("style:parent-style-name")) {Lesvaleurs.get(i).setEnabled(false);}
if(Leslabels.get(i).getText().equals("style:family")) {Lesvaleurs.get(i).setEnabled(false);}
if(Leslabels.get(i).getText().equals("style:master-page-name")) {Lesvaleurs.get(i).setEnabled(false);}
if(Leslabels.get(i).getText().equals("numeroabsolue")) {Lesvaleurs.get(i).setEnabled(false);}
if(Leslabels.get(i).getText().equals("numero")) {Lesvaleurs.get(i).setEnabled(false);}
if(Leslabels.get(i).getText().equals("style:page_number")) {Lesvaleurs.get(i).setEnabled(false);}
}
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
for(int i = 0 ; i<Leslabels.size();i++) {
String value = Lesvaleurs.get(i).getText();
if(value.contains("")) value = value.substring(0,value.lastIndexOf(""));
if(value.contains("")) value = value.substring(0,value.lastIndexOf(""));
if(Lesevaluer.get(i).isSelected()) value = value + "";
String point = "0";
int pointNumeric = 0;
try {
pointNumeric = Integer.valueOf(Lespoints.get(i).getText());
point = String.valueOf(pointNumeric);
} catch (Exception e2) {
JOptionPane.showMessageDialog(null, "La valeur pour l'attribut " + Leslabels.get(i) + " n'est pas un entier");
}
value = value + point;
nod.getAttributs().put(Leslabels.get(i).getText(), value);
J.refreshAffichage(nod);
dispose();
}
}
});
addMouseListener((MouseListener) new MouseAdapter() {
public void mousePressed(MouseEvent me) {
System.out.println(me);
Component focusOwner = FocusManager.getCurrentManager().getFocusOwner();
System.out.println(focusOwner.getName());
}
});
this.setVisible(true);
}
class MyMouseListener extends MouseAdapter {
public void mouseClicked(MouseEvent evt) {
if (evt.getClickCount() == 3) {
System.out.println("triple-click");
} else if (evt.getClickCount() == 2) {
System.out.println("double-click");
}
else if (evt.getClickCount() == 1) {
System.out.println("click");
}
Component focusOwner = FocusManager.getCurrentManager().getFocusOwner();
indexSelect = Lesvaleurs.indexOf(focusOwner);
System.out.println("indexSelect = " + indexSelect);
}
}
}