-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLien.java
More file actions
115 lines (99 loc) · 3.57 KB
/
Lien.java
File metadata and controls
115 lines (99 loc) · 3.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import java.awt.BorderLayout;
import java.awt.Desktop;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.html.HTML;
public class Lien extends JDialog implements ActionListener, KeyListener {
private static final long serialVersionUID = 1L;
private JLabel labLien, labNomLien;
private JTextField tfLien, tfNomLien;
private JButton valid;
private VueProjet vp;
public Lien(VueProjet vp) {
super(vp, "Nouveau Lien", true);
setLayout(new GridLayout(5,1));
setSize(400, 160);
setLocationRelativeTo(null);
setResizable(false);
this.vp = vp;
JPanel pBas = new JPanel(new BorderLayout());
this.labLien = new JLabel("Entrez le lien URL");
add(this.labLien, BorderLayout.NORTH);
this.tfLien = new JTextField();
add(this.tfLien);
this.labNomLien = new JLabel("Entrez le titre du lien sous lequel il apparaîtra");
add(this.labNomLien);
this.tfNomLien = new JTextField();
add(this.tfNomLien);
this.valid = new JButton("Valider");
this.valid.addActionListener(this);
pBas.add(this.valid, BorderLayout.EAST);
add(pBas, BorderLayout.SOUTH);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == this.valid) {
try {
URL url = new URL(this.tfLien.getText());
((OngletPage)vp.getOngletSelectedIndex()).getJTextPane().addHyperlinkListener(new HyperlinkListener() {
public void hyperlinkUpdate(HyperlinkEvent e) {
if (HyperlinkEvent.EventType.ACTIVATED.equals(e.getEventType())) {
Desktop desktop = Desktop.getDesktop();
try {
desktop.browse(e.getURL().toURI());
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
});
((OngletPage)vp.getOngletSelectedIndex()).getJTextPane().addKeyListener(this);
try {
((OngletPage)vp.getOngletSelectedIndex()).ajouterElement("<a style=\"text-decoration: underline;\" href="+this.tfLien.getText()+">"+this.tfNomLien.getText()+"</a> ", HTML.Tag.A);
} catch (BadLocationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
this.dispose();
} catch (MalformedURLException e1) {
JFrame f = new JFrame();
f.setTitle("Erreur URL");
f.setResizable(false);
f.setSize(200, 70);
JLabel labErr = new JLabel("\tAdresse URL invalide");
f.add(labErr);
f.setVisible(true);
f.setLocationRelativeTo(null);
}
}
}
public void keyPressed(KeyEvent e) {
if(e.getModifiers() == KeyEvent.CTRL_MASK) {
((OngletPage)vp.getOngletSelectedIndex()).getJTextPane().setEditable(false);
}
}
public void keyReleased(KeyEvent e) {
if(e.getModifiers() != KeyEvent.CTRL_MASK) {
((OngletPage)vp.getOngletSelectedIndex()).getJTextPane().setEditable(true);
}
}
public void keyTyped(KeyEvent arg0) {}
}