00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 package boyermooredemo;
00023
00024 import java.awt.Color;
00025 import java.util.TreeMap;
00026 import javax.swing.JOptionPane;
00027 import javax.swing.JTextPane;
00028 import javax.swing.text.BadLocationException;
00029 import javax.swing.text.Style;
00030 import javax.swing.text.StyleConstants;
00031 import javax.swing.text.StyledDocument;
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 public class BarevnyTextPane extends JTextPane {
00042
00043
00044
00045
00046
00047 class usekTextu
00048 {
00049
00050 public int zacatek;
00051
00052 public int delka;
00053
00054 public Color vychoziBarva;
00055
00056 public Color vychoziBarvaPozadi;
00057
00058 public boolean tucne;
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069 usekTextu(int zacatekUseku, int delkaUseku, Color barva, Color barvaPozadi,
00070 boolean tucneP)
00071 {
00072 zacatek = zacatekUseku;
00073 delka = delkaUseku;
00074 vychoziBarva = barva;
00075 vychoziBarvaPozadi = barvaPozadi;
00076 tucne = tucneP;
00077 }
00078 }
00079
00080 private StyledDocument dokument;
00081 private int pocetUseku = 0;
00082 private TreeMap<Integer,usekTextu> useky;
00083
00084
00085
00086
00087 public BarevnyTextPane()
00088 {
00089 super();
00090 this.dokument = (StyledDocument)this.getDocument();
00091 this.useky = new TreeMap<Integer,usekTextu>();
00092 this.pocetUseku = 0;
00093 }
00094
00095
00096
00097
00098 public void vyprazdniPanel()
00099 {
00100 try {
00101 this.dokument.remove(0,dokument.getLength());
00102 } catch (BadLocationException e) {
00103 JOptionPane.showMessageDialog(this, "Došlo k chybě při úpravě pole s algoritmem.",
00104 "Chyba",JOptionPane.ERROR_MESSAGE);
00105 }
00106 this.useky = new TreeMap<Integer,usekTextu>();
00107 this.pocetUseku = 0;
00108 }
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118 public void pridejText(String vkladanyText, Color barva, Color barvaPozadi,
00119 boolean tucnePismo)
00120 {
00121
00122 Style styl = this.dokument.addStyle("Styl" + this.pocetUseku, null);
00123
00124 StyleConstants.setFontFamily(styl, "SansSerif");
00125
00126 StyleConstants.setFontSize(styl, 12);
00127
00128 StyleConstants.setForeground(styl, barva);
00129
00130 StyleConstants.setBackground(styl, barvaPozadi);
00131 if (tucnePismo)
00132 {
00133 StyleConstants.setBold(styl, true);
00134 }
00135
00136
00137 this.useky.put(this.pocetUseku,new usekTextu(dokument.getLength(),
00138 vkladanyText.length(),barva,barvaPozadi,tucnePismo));
00139 this.pocetUseku++;
00140
00141
00142 try {
00143 dokument.insertString(dokument.getLength(), vkladanyText, styl);
00144 } catch (BadLocationException e) {
00145 JOptionPane.showMessageDialog(this, "Došlo k chybě při vypisování algoritmu.",
00146 "Chyba",JOptionPane.ERROR_MESSAGE);
00147 }
00148 }
00149
00150
00151
00152
00153
00154
00155
00156
00157 public void nastavBarvu(int cisloUseku, Color barva, Color barvaPozadi)
00158 {
00159
00160 usekTextu informace = useky.get(cisloUseku);
00161
00162 dokument.removeStyle("Styl" + cisloUseku);
00163
00164
00165 Style styl = this.dokument.addStyle("Styl" + cisloUseku, null);
00166
00167 StyleConstants.setFontFamily(styl, "SansSerif");
00168
00169 StyleConstants.setFontSize(styl, 12);
00170
00171 StyleConstants.setForeground(styl, barva);
00172
00173 StyleConstants.setBackground(styl, barvaPozadi);
00174 if (informace.tucne)
00175 {
00176 StyleConstants.setBold(styl, true);
00177 }
00178
00179
00180 String textUseku = "";
00181 try {
00182 textUseku = dokument.getText(informace.zacatek,informace.delka);
00183 dokument.remove(informace.zacatek,informace.delka);
00184 dokument.insertString(informace.zacatek, textUseku, styl);
00185 } catch (BadLocationException e) {
00186 JOptionPane.showMessageDialog(this, "Došlo k chybě při vypisování algoritmu.",
00187 "Chyba",JOptionPane.ERROR_MESSAGE);
00188 }
00189 }
00190
00191
00192
00193
00194
00195
00196
00197 public void nastavVychoziBarvu(int cisloUseku)
00198 {
00199
00200 usekTextu informace = useky.get(cisloUseku);
00201
00202 dokument.removeStyle("Styl" + cisloUseku);
00203
00204
00205 Style styl = this.dokument.addStyle("Styl" + cisloUseku, null);
00206
00207 StyleConstants.setFontFamily(styl, "SansSerif");
00208
00209 StyleConstants.setFontSize(styl, 12);
00210
00211 StyleConstants.setForeground(styl, informace.vychoziBarva);
00212
00213 StyleConstants.setBackground(styl, informace.vychoziBarvaPozadi);
00214 if (informace.tucne)
00215 {
00216 StyleConstants.setBold(styl, true);
00217 }
00218
00219
00220 String textUseku = "";
00221 try {
00222 textUseku = dokument.getText(informace.zacatek,informace.delka);
00223 dokument.remove(informace.zacatek,informace.delka);
00224 dokument.insertString(informace.zacatek, textUseku, styl);
00225 } catch (BadLocationException e) {
00226 JOptionPane.showMessageDialog(this, "Došlo k chybě při vypisování algoritmu.",
00227 "Chyba",JOptionPane.ERROR_MESSAGE);
00228 }
00229 }
00230
00231 }
00232
00233