Newsgroup: it.comp.java
Titolo: Aiuto: devo realizzare un IDE grafico !!!

Mi e' stato chiesto di implementare un ide grafico in cui l'utente possa
liberamente creare/spostare degli elementi, creare dei link(linee di diverso
colore e forma) tra di loro, ogni link e ogni elemento hanno delle
proprieta' che l'utente puo' modificare in una apposita property list,
oltre logicamente alle comuni funzioni di stampa, salvataggio, export in PDF
ecc.
Per farla breve avete presente TogheterJ, Rational Rose e simili ?
Praticamente simile, solo che non si trattera di un software per il "disegno
UML", bensi di un gestore di reti (o piu precisamente di grafi)
Sono ancora alla fase di progettazione, ma penso di implementare i nodi con
dei component appositi (ora sto facendo le prove con JLabel), in modo da
gestire correttamente MouseClik, MouseDown, MouseUp e MouseMove
Non so invece da dove partire per implementare le linee tra i vari nodi,
Supponiamo che gestisca il loro disegno dal Canvas del container,
come fare poi a riconoscere il click o il MouseOver su un link già
esistente?
Si potrebbe fare con dei componenti Appositi??? (in tal caso come fare a
ruotare il componte, o a fargli assumere una forma non rettangolare??)
Ogni suggerimento e' bene accetto!!
Grazie


si'. molto semplicisticamente con swing:
fai un componente che si gestisce i vari paintComponent paintBorder ecc.
se il tuo link va da A a B puoi facilmente realizzare un componente
trasparente a parte una linea che va da A e B e dove A e B sono i due
vertici opposti del bound del componente:
A---------
|        |
|        |
_________B
a questo punto devi gestire il mouse. il compenente sente tutti gli
eventi nel suo bound. pero' tu puoi implementare il metodo "contains"
che viene chiamato per sapere se un dato evento avvenuto nel bound e' da
ascoltare oppure no.
poi devi gestire il verso del link...
le "rotazioni" non si fanno, nel senso che un componente avra' sempre un
bound rettangolare. pero' puoi gestire il click sugli estremi e in
qualche modo ricalcolarti bound e posizione del component. ovviamente
contains dovra' essere in grado di adattarsi a questo cambiamento... si
tratta poi di sapere se un punto sta su di una retta (o meglio in
prossimita' di essa).
come dici? il cliente vuole i link curvi... che ci vuoi fare... qui vado
un po' in crisi ma un modo ci sara' per sapere se un punto e' prossimo
alla curva o no, magari senza scomodare equazioni a 12 milioni di gradi.
secondo me pero' quest'ultimo problema e' gia' stato affrontato e
risolto da qualcuno... googla googla.
ciao
-- 
Seti@Home Java Applets
http://maruko.cjb.net/

 eventi nel suo bound. pero' tu puoi implementare il metodo "contains"
grazie Marco!!!
contains era la chiave che mi mancava proprio!!!
a questo punto posso partire con lo sviluppo!!!

ascoltando il vento dell'est udii Simone Bevilacqua che diceva queste parole
| Non so invece da dove partire per implementare le linee tra i vari nodi,
| Supponiamo che gestisca il loro disegno dal Canvas del container,
| come fare poi a riconoscere il click o il MouseOver su un link già
| esistente?
|
| Si potrebbe fare con dei componenti Appositi??? (in tal caso come fare a
| ruotare il componte, o a fargli assumere una forma non rettangolare??)
|
| Ogni suggerimento e' bene accetto!!
Ciao, forse non ti servira' a niente, ma se disegni le forme (nodi e linee)
usando un GeneralPath, hai a disposizione il metodo  'contains' col quale
puoi sapere se un punto (dove ha fatto click l'utente!) rientra o no nel suo
perimetro.
Magari poi per ruotarli si potrebbero usare le AffineTransform...
Tra l'altro credo che anche i componenti swing facciano cosi' per capire se
un click e' stato fatto sopra di essi.
Ciao

a questo punto posso partire con lo sviluppo!!!
Se ciò che devi fare non ha uno scopo meramente didattico, ti consiglierei 
di adottare una libreria già fatta: lo sviluppo di queste cose porte via un 
sacco di tempo e, spesso (ma ti auguro il contrario), i risultati non sono 
così "estetici". :-)
Esempio (altro su google cercando "java graph")
http://gef.tigris.org/
http://openjgraph.sourceforge.net/
A dire il vero, anche se il fine fosse didattico, lo studio di una libreria 
del genere può essere molto interessante.
-- 
Ciao
	Fabrizio C.

 
http://openjgraph.sourceforge.net/
penso di essere a buon punto,
ci sono ancora dei casini, nel caso in cui il grafo diventa "multigrafo"
(+link tra gli stessi nodi), ma comunque darò un occhiata alle librerie
suggerite
ti ringrazio del suggerimento!!
Ciao
Simone