2011-09-30 9 views
7

In smartGWT è possibile aggiungere un altro widget (sembra utilizzare un'interfaccia) a un'area di disegno HTML5, come si può vedere in this example.Aggiungi un widget (pulsante) a un'area di testo HTML5 in GWT

Ora sto cercando di capire, se questo è possibile anche nel (grezzo) GWT2.4. Qualcuno di voi ha un esempio funzionante usando GWT senza progetti aggiuntivi (come smartGWT, gwtExt, extGWT, ...)?

Grazie per tutte le vostre risposte.

+0

So che questa è una vecchia questione, ma per amore di altri lettori: Canvas nell'esempio collegato appartiene al SmartGWT e hanno niente a che fare con HTML5 Canvas. – targumon

+0

@targumon: imho è questo SmartGWT-Canvas basato su un normale Canvas HTML5 e personalizzato. – Erik

+0

Erik, questa non è una questione di parere :-D basta ispezionarla in un browser moderno - quando si utilizza ** com.smartgwt.client.widgets.Canvas **, e questo è il caso nell'esempio java2s.com hai dato, l'oggetto DOM risultante è un tag DIV: es

...
solo se si utilizza ** com.google.gwt.canvas.client.Canvas.createIfSupported() **, si otterrà un tag (su un browser supportato, ovviamente). – targumon

risposta

0

HTML5 canvas non è nel campo di applicazione GWT ancora, ma forse si può semplicemente costruire que elementi equivalenti nel Dom con GWT dom API e disegnare in essa ATTRAVERSO JSNI chiamate

+0

Non sono d'accordo. Con GWT 2.2 google ha aggiunto il supporto sperimentale per canvas HTML5. Con GWT 2.4 la tela è ufficialmente supportata da GWT (vedi: http://code.google.com/intl/de-DE/webtoolkit/doc/latest/DevGuideHtml5.html). JSNI è forse una soluzione: hai un esempio funzionante? ;) – Erik

0

per quanto ne so, non si può mettere widget di arbitrario in una tela. Quello che puoi fare è disegnare immagini. Quindi immagino che i widget di smartGWT che tu rispetti non siano altro che immagini.

Se si dispone di un oggetto immagine GWT, questo è come lo si ottiene da trarre in tela:

import com.google.gwt.canvas.client.Canvas; 
import com.google.gwt.core.client.EntryPoint; 
import com.google.gwt.dom.client.ImageElement; 
import com.google.gwt.user.client.ui.Image; 
import com.google.gwt.user.client.ui.RootLayoutPanel; 

public class ImageCanvasTest implements EntryPoint { 

    public void onModuleLoad() { 
     Image image = new Image(
      "http://upload.wikimedia.org/wikipedia/en/f/f6/Gwt-logo.png"); 

     Canvas canvas = Canvas.createIfSupported(); 
     canvas.getContext2d().drawImage(
     ImageElement.as(image.getElement()), 0, 0); 

     RootLayoutPanel.get().add(canvas); 
    } 

} 
+0

Non sono d'accordo: guarda l'esempio. È possibile registrare un MouseHandler sui widget posizionati nell'area di disegno. Come disegnare un'immagine all'interno di una tela a cui sono abituato e non è la risposta. – Erik

+0

Ora non sono un esperto di SmartGWT, ma guardando il codice Canvas nel progetto SmartGWT, non penso a SmartGWT Canvas (http://code.google.com/p/smartgwt/source/browse/trunk/main /src/com/smartgwt/client/widgets/Canvas.java) ha qualcosa a che fare con una tela HMLT5. La tela SmartGWT è appena chiamata Canvas ... –

+0

Anche in questo caso non sono d'accordo: Canvas of SmartGWT è un'eredità di BaseWidget, che è ancora un'eredità di un normale Widget GWT. SmartGWT-Canvas include un metodo JSNI chiamato "create", che chiama la normale funzione di creazione JS di un canvas HTML5. Inoltre: penso che sia impossibile creare i propri browser-widget non basati su nessuno dei widget predefiniti, supporta la definizione HTML. – Erik

-1

Quello che vi serve è uno stile CSS per i pulsanti. Uno stile simile al seguente:

button { 
    position:absolute; 
    z-index:2; 
} 

button.zoomOut { 
    top:200px; 
    left:265px; 
    font-size: 30px; 
    margin-left:auto; 
    margin-right:auto; 
} 

button.zoomIn { 
    top:200px; 
    left:400px; 
    font-size: 30px; 
    margin-left:auto; 
    margin-right:auto; 
} 

Con la posizione assoluta è possibile metterli in qualsiasi punto dello schermo.

Acclamazioni