Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce
Abbiamo provato il nuovo HUAWEI Pura 80 Pro. Parliamo di uno smartphone che è un vero capolavoro di fotografia mobile, grazie ad un comparto completo in tutto e per tutto, In questa colorazione ci è piaciuto molto, ma i limiti hardware e software, seppur in netto miglioramento, ci sono ancora. Ma HUAWEI ha fatto davvero passi da gigante per questa nuova serie Pura 80. Buona anche l'autonomia e soprattutto la ricarica rapida sia cablata che wireless, velocissima.
Opera Neon: il browser AI agentico di nuova generazione
Opera Neon: il browser AI agentico di nuova generazione
Abbiamo provato il nuovo web browser con intelligenza artificiale della serie Opera accessibile tramite abbonamento. Ecco le nostre prime impressioni sulle funzionalità di Opera Neon basate su AI e come funzionano
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-10-2007, 19:00   #1
alexievic
Member
 
Iscritto dal: Oct 2001
Città: Forlì
Messaggi: 268
[Java] Problema action

Nella mia applicazione c'è una JTextarea utilizzata come editor.
Il problema è nelle actions.

- Prima dichiaro un array di action aggiuntive

Codice:
private Action[] defaultActions = { new NewAction(), new OpenAction(),
            new SaveAction() ... ecc }
- poi inserisco le action in una Hashtable 'commands' che serve per richiamare le action tramite nome all'interno del programma

Codice:
        Action[] actions = getActions();
        for (int i = 0; i < actions.length; i++)
        {
            Action a = actions[i];
            commands.put(a.getValue(Action.NAME).toString(), a);
                }
- il metodo getActions qui sopra è questo:

Codice:
    protected Action[] getActions()
    {
        return TextAction.augmentList(editor.getActions(), defaultActions);
    }
Io apro una JDialog (implementata in un altro file) che ha dentro dei campi di testo JTextField. Il problema che si presenta è che in tutti questi campi non funziona più il copia e incolla tramite tastiera (CTRL+C, ecc).
Commentando la return del metodo getActions tornano funzionanti quindi immagino che sia dovuto a quella riga di codice.
In ogni modo non riesco a spiegarmi perchè quel metodo statico di TextAction vada ad influire sugli altri controlli del programma, se non sbaglio il suo compito non è solo quello di aumentare la lista di action passati come primo argomento con quelle passate come secondo argomento? Perchè vanno a modificare le action degli altri controlli del programma?
__________________
Asus P5K-E | E6600 @3.2ghz | Artic Freezer 7 Pro | 2X1GB Corsair PC6400 | Sparkle nVidia 8800 GTS 320MB | HD Hitachi 320GB SataII | Maxtor 300GB EIDE | DVD Optiarc AD-7170S | Monitor LCD Acer AL1917 19'' | Monitor Philips 109B CRT 19''
alexievic è offline   Rispondi citando il messaggio o parte di esso
Old 09-10-2007, 19:49   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
E' possibile che sia per questa ragione (estratto dalla documentazione per TextAcion.augment):

"The second list takes precedence over the first list; that is, when both lists contain a command with the same name, the command from the second list is used."

Puoi capire subito se c'è un conflitto di nomi invertendo i parametri della tua invocazione di augmentList

Codice:
return TextAction.augmentList(defaultActions, editor.getActions());
Se le combinazioni predefinite riappaiono allora è un problema di nomi. Altrimenti è un bel mistero. Forse usi gli stessi acceleratori per azioni diverse?
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2007, 00:14   #3
alexievic
Member
 
Iscritto dal: Oct 2001
Città: Forlì
Messaggi: 268
Innanzi tutto ti ringrazio per i consigli.
Ho provato ad invertire le due liste ma le cose non cambiano.
Per attivare le action di copia, incolla e taglia in un campo (ho fatto una prova solo li) ho dovuto fare una cosa del genere

Codice:
		JTextField owlurlpathField = new JTextField(30);

		Keymap parent = owlurlpathField.getKeymap();
		Keymap newmap = JTextComponent.addKeymap("KeymapMap", parent);
		KeyStroke u = KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK);
		Action actionU = new DefaultEditorKit.CopyAction();
		newmap.addActionForKeyStroke(u, actionU);
		KeyStroke p = KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK);
		Action actionP = new DefaultEditorKit.PasteAction();
		newmap.addActionForKeyStroke(p, actionP);
		KeyStroke x = KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK);
		Action actionX = new DefaultEditorKit.CutAction();
		newmap.addActionForKeyStroke(x, actionX);		
		owlurlpathField.setKeymap(newmap);
In questo modo nel campo suddetto ritornano operative le action interessate, però dovrei farlo in altri 3/4 campi ed immagino esista un altro modo per risolvere il problema dovuto molto probabilmente alla TextAction.augmentList.
__________________
Asus P5K-E | E6600 @3.2ghz | Artic Freezer 7 Pro | 2X1GB Corsair PC6400 | Sparkle nVidia 8800 GTS 320MB | HD Hitachi 320GB SataII | Maxtor 300GB EIDE | DVD Optiarc AD-7170S | Monitor LCD Acer AL1917 19'' | Monitor Philips 109B CRT 19''
alexievic è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2007, 20:06   #4
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Il problema non è tanto se esistano alternative (potresti usare la mappa delle azioni dei tuoi componenti per registrare nuove azioni) ma perchè quel getActions non funziona. Io ho provato a guardare ma non mi sembra che a parte il "name clash" esistano altri conflitti che possano comportare l'invalidità delle azioni predefinite fuse con le nuove tramite TextAction.augmentList. Misteri dell'informatica.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2007, 21:51   #5
alexievic
Member
 
Iscritto dal: Oct 2001
Città: Forlì
Messaggi: 268
Ho trovato il problema oggi, ti ringrazio!
Praticamente era colpa di un metodo che attivava e disattivava alcune action condivise (eh, se non sarebbero action!). In pratica le disattivava quando il file non era ancora stato aperto nell'editor e dopo li riattivava. Il problema è che nel dialogo di creazione nuovo progetto poi non funzionavano copia, incolla e taglia all'interno dei JTextField.
Ho risolto facendo un controllo che riattiva le action prima di mostrare il dialogo e poi le ripristina allo stato precedente una volta che viene chiuso. Trattandosi di dialogo modale non vi sono problemi.
Quindi era colpa mia!

Ora però ho un problema ben più complesso da risolvere!
Devo gestire l'undo relativamente a gruppi di modifiche sul document dell'editor.
In pratica utilizzo il metodo replace sul document dell'area di testo per rimpiazzare un testo normale con un testo con attributi (classe AttributeSet) personalizzati più uno per la sottolineatura. Il problema è che l'undo è gestito per ogni singola operazione atomica di modifica sul document e invece la replace non è atomica ed esegue due operazioni (prima elimina poi mette il testo nuovo).
Sto guardando il javadoc delle varie classi di gestione del sistema undo ma ci capisco sempre meno e non ho ancora trovato documentazione o tutorial pratici che spieghino come utilizzare undo/redo su comandi composti.

Comunque mi sa che sono andato un tantino off-topic!
__________________
Asus P5K-E | E6600 @3.2ghz | Artic Freezer 7 Pro | 2X1GB Corsair PC6400 | Sparkle nVidia 8800 GTS 320MB | HD Hitachi 320GB SataII | Maxtor 300GB EIDE | DVD Optiarc AD-7170S | Monitor LCD Acer AL1917 19'' | Monitor Philips 109B CRT 19''
alexievic è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce Recensione Pura 80 Pro: HUAWEI torna a stupire c...
Opera Neon: il browser AI agentico di nuova generazione Opera Neon: il browser AI agentico di nuova gene...
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
Donald Trump torna sui suoi passi: Jared...
Il razzo spaziale europeo Arianespace Ar...
La Luna è stata colpita da un pic...
Creative Aurvana Ace 3: il futuro dell'a...
AMD chiarisce una volta per tutte (si sp...
Super sconti sui Google Pixel: Pixel 10,...
Addio SRAM? La nuova tecnologia GCRAM pr...
La repubblicana Anna Paulina Luna chiede...
1.000 Hz, risoluzione HD Ready: il futur...
Polestar 4 legge la strada al tuo posto:...
Mercato auto in Italia: vola l'elettrico...
Gli AI browser aggirano i paywall: i cas...
MSI regala Football Manager 26 con sched...
Come va in casa Broadcom/VMware? Computa...
Startup Marathon 2025: chi sono le 12 az...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:45.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v