RText: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Specificati i linguaggi di programmazione e di scripting attraverso i quali è possibile programmare le macro.
Aggiunta la sezione Aspetti tecnici > Dettagli di RSyntaxTextArea
Riga 46:
Il progetto è basato su un componente, l'area testuale RSyntaxTextArea, anch'esso open source e scritto in [[Java]], e non ricorre in alcun caso all'invocazione delle [[Application programming interface|API]] [[Win32]], quindi non impiega [[Microsoft Foundation Classes]] (MFC) o librerie simili, il che assicura la portabilità del programma in ambito multipiattaforma, in quanto nativo [[Java]]. È distribuito rispettando le specifiche di una versione modificata del protocollo [[BSD License]].
 
===Dettagli di RSyntaxTextArea===
Dato che RSyntaxTextArea supporta internamente la ricerca di testo con espressioni regolari su più righe, RText permette tale modalità di ricerca. <tt>RSyntaxTextArea</tt> è un'estensione della più diffusa <tt>JTextArea</tt> contenuta nel package [[Swing_(Java)|Swing]] di Java. Tra le caratteristiche aggiunte compaiono:
* Modalità di inserimento / sovrascrittura (viene attivata premendo il tasto Insert).
* Un menù contestuale, a comparsa, con le opzioni di modifica standard.
* Supporto per le [[Macro_(informatica)|macro]].
* Funzionalità "Marca tutto", applicabile durante la ricerca testuale.
* Un modo per modificare lo sfondo di un'immagine (i formati supportati sono [[Graphics_Interchange_Format|gif]] / [[Portable_Network_Graphics|png]] / [[JPEG|jpg]])
* Evidenziazione della riga correntemente selezionata (può essere disattivata).
* Un modo facile per stampare il suo contenuto testuale (viene estesa l'interfaccia Printable, contenuta nel package [[Abstract_Window_Toolkit|AWT]] di Java)
* Differenti modalità di aggiunta dei caratteri di tabulazione (soft e hard, rispettivamente emulati o meno dagli spazi)
* Viene corretto un baco tuttora presente nel metodo <code>setTabSize</code> di <tt>JTextArea</tt>.
 
Se lo sfondo di una <tt>RTextArea</tt> (classe estesa da <tt>RSyntaxTextArea</tt>) fosse impostato con un determinato colore, la sua proprietà <code>opaque</code> (opaco) verrebbe impostata a <code>true</code> (vero) per ragioni prestazionali. Viceversa, se lo sfondo fosse impostato con un'immagine, allora la proprietà <code>opaque<code> sarebbe valorizzata con <code>false<code> (falso). Tutto ciò peggiora le prestazioni ma, se così non fosse, l'utente vedrebbe comparire dei difetti grafici sullo schermo, nella zona occupata dall'area testuale, mentre scorre un documento usando i tasti direzionali (lo stesso problema non si verifica premendo i tasti Pagina Su/Giù). Fifesoft ha sconsigliato di modificare il valore della proprietà <code>opaque</code>, giacché viene fatto dalle logiche in essere, quando opportuno.
Le macro vengono programmate alternativamente nel [[linguaggio di scripting]] [[Programmazione orientata agli oggetti|orientato agli oggetti]] ed agli [[Programmazione orientata agli eventi|eventi]] [[JavaScript]], sfruttando l'interprete [[JavaScript]] Rhino, oppure nel [[linguaggio di programmazione]] [[Programmazione ad oggetti|ad oggetti]] per la [[Piattaforma Java]] [[Groovy]].
 
Fifesoft raccomanda di inglobare l'area testuale internamente ad un'istanza di <tt>RTextScrollPane</tt>, anziché nel più noto <tt>JScrollPane</tt>, qualora si decidesse di includere <tt>RSyntaxTextArea</tt> in un programma sviluppato autonomamente, dato che questa classe consente l'aggiunta dei numeri della linea e dei segnalibri all'area di testo.
 
===Dettagli sulle macro===
Le macro vengono programmate alternativamente nel [[linguaggio di scripting]] [[Programmazione orientata agli oggetti|orientato agli oggetti]] ed agli [[Programmazione orientata agli eventi|eventi]] [[JavaScript]], sfruttando l'interprete [[JavaScript]] Rhino, oppure nel [[linguaggio di programmazione]] [[Programmazione ad oggetti|ad oggetti]] per la [[Piattaformapiattaforma Java]] [[Groovy]].
 
== Caratteristiche ==
Riga 57 ⟶ 72:
 
Altre caratteristiche sono:
 
* [[Code folding]] ed [[evidenziazione del codice]] (anche personalizzata)
* Auto-completamento