analyseWriter/src/fenetres/attributs.java

385 lines
16 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 fenetres;
import java.awt.BorderLayout;
import java.awt.Component;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import MEPTL.commandes;
import cXML.node;
import list.listeAttributWriterPasEvaluableAvecCodeEvaluateur;
import list.listeAttributWriterValeurPasModifiable;
import list.listeAttributsAnalyseWriter;
import list.listeNodeFormatageDirectDeWriter;
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;
import java.awt.Color;
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);
int screenWidth = (int) java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getWidth();
int screenHeight = (int) java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getHeight();
setLocation(( (screenWidth) - getWidth()) / 2, (screenHeight - getHeight()) / 2);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
ImageIcon img = new ImageIcon(getClass().getResource("/evalwriter.png") );
setIconImage(img.getImage());
setTitle(commandes.Titre + " - Les attributs de Writer");
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("Verifier les codes d'évaluation");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
panelBas.add(btnNewButton);
JButton btnValide = new JButton("Valider les modifications");
btnValide.setFont(new Font("Tahoma", Font.BOLD, 12));
btnValide.setForeground(Color.RED);
panelBas.add(btnValide);
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][::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 peuvent pas être modifiées
//Enabled false les evaluer si pas evaluable
for(int i = 0 ; i<Leslabels.size();i++) {
if(listeAttributWriterValeurPasModifiable.isModifiable(Leslabels.get(i).getText())) {Lesvaleurs.get(i).setEnabled(false);}
if(listeAttributWriterPasEvaluableAvecCodeEvaluateur.isEvaluable(Leslabels.get(i).getText())) {Lesevaluer.get(i).setEnabled(false);Lespoints.get(i).setEnabled(false);}
}
//*******************
//** Bouton valide **
//*******************
btnValide.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String codeEvaluateur = "";
// Le code evaluateur ‼ que dans les nodes des styles de paragraphe
if(nod.chemin().contains("style:paragraph")) {
node nodStyleParent = nod.retourneParentAyantLAttribut("style:name");
if(nodStyleParent!=null) {
if(nodStyleParent.getAttributs().get("EvaluerATraversAnalyseStyle")!=null) {
if(nodStyleParent.getAttributs().get("EvaluerATraversAnalyseStyle").equals("true")) {
codeEvaluateur = "";
}
}
if(listeNodeFormatageDirectDeWriter.isFormatageDirect(nod)) codeEvaluateur = "";
}
}
System.out.println("code évaluateur = " + codeEvaluateur);
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(""));
String point = "0";
if(Lesevaluer.get(i).isSelected()) {
value = value + codeEvaluateur;
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");
}
}
if(Lesevaluer.get(i).isSelected()) 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);
}
}
}