387 lines
16 KiB
Java
387 lines
16 KiB
Java
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);}
|
||
// Important
|
||
//exception avec text:section et son attribut text:name qui doit être évaluable
|
||
if(nod.getNomElt().equals("text:section") && Leslabels.get(i).getText().equals("text:name")) {Lesvaleurs.get(i).setEnabled(true);Lesevaluer.get(i).setEnabled(true);Lespoints.get(i).setEnabled(true);}
|
||
}
|
||
|
||
//*******************
|
||
//** 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 = "‼";
|
||
}
|
||
}
|
||
// Style de node formatage directe commence par P1, P2, P3, etc.. ou T1, T2, T3, etc..
|
||
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);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
}
|