You missed my point there. I guess I should have said I don't know OR
care what gwt-fabridge is, but if you want help with it, you might as
on a forum that is relevant to it?

On Feb 4, 1:37 pm, Jihong <[email protected]> wrote:
> gwt-fabridge is a utility for gwt to access adobe swf file. See the
> following pagehttp://code.google.com/p/gwt-fabridge/
>
> On Feb 4, 5:59 am, Charlie Collins <[email protected]> wrote:
>
> > I don't know whatgwt-fabridgeis, but maybe that project has it's own
> > support list you can use for issues such as this?  Not sure you will
> > get much response here.
>
> > On Feb 3, 4:00 pm, "Jihong Liu" <[email protected]> wrote:
>
> > > Hi. I have a problem forgwt-fabridge. I think it may be a critical
> > > issue forgwt-fabridge.
>
> > > If a swf widget is added into a panel, and then add the panel into a
> > > container. And then remove the panel from the container, and then add
> > > the panel back into the container. Then the Null pointer error will
> > > occur at onInitialization()caused by the swf widget. I did a test using
> > > the FABridgeDemo. In the FABridgeDemo, I added a button for removing the
> > > swf widget.
>
> > > When start the program, first click the "Add new SWF", and everything is
> > > ok. Then click the "Remove SWF", then the swf is removed. Then click the
> > > "Add new SWF" again, then an error will happen.
>
> > > I have tried many ways, the only way to make it work is to create the
> > > swf widge again and using a different name if the widget has been
> > > removed. For example:
>
> > >     java.util.Date date = new java.util.Date();
>
> > >     swfWidget = new
> > > SWFABridgeWidget("app.swf",400,400,"example"+date.getTime());
>
> > > But it is not good at all. And the behavior is not the same as other
> > > regular gwt widgets. For other widgets, after they are put in a panel.
> > > Then you can add/drop this panel into/from a container many times
> > > without re-create the inside widgets.
>
> > > I am really frustrated about this problem. Based on user's selection we
> > > will add different panels into a container for display. It is really
> > > painful if we have to create the swf widgets again if the panel has been
> > > dropped from the container once.
>
> > > I don't know whether the following code in
> > > pl.rmalinowski.gwt2swf.client.ui.SWFWidge causes problem or not.
>
> > > protected void onUnload() {
>
> > >     // GWT.log("onUnload", null);
>
> > >     getElement().removeChild(DOM.getFirstChild(getElement()));
>
> > >     isSWFInjected = false;
>
> > >     super.onUnload();
>
> > >   }
>
> > > The statement: getElement().removeChild(DOM.getFirstChild(getElement()))
> > > removes the child from the widget. Thus after a swfwidget is removed
> > > from a panel, and then add the swf back, no child there.
>
> > > Following is the code in com.google.gwt.user.client.ui.ComplexPanel
>
> > > @Override
>
> > >   public boolean remove(Widget w) {
>
> > >     // Validate.
>
> > >     if (w.getParent() != this) {
>
> > >       return false;
>
> > >     }
>
> > >     // Orphan.
>
> > >     orphan(w);
>
> > >     // Physical detach.
>
> > >     Element elem = w.getElement();
>
> > >     DOM.removeChild(DOM.getParent(elem), elem);
>
> > >     // Logical detach.
>
> > >     getChildren().remove(w);
>
> > >     return true;
>
> > >   }
>
> > > It sounds to me that the different between two programs is that in
> > > ComplexPanel, it removes the widget's element only, but in SWFWidge, it
> > > removes the child of the widget's element.
>
> > > Thank you very much!
>
> > > Jihong Liu
>
> > > Following is the source code which causes problem
>
> > > package com.satmetrix.swfTest.client;
>
> > > import org.argunet.gwt.fabridge.client.SWFABridgeWidget;
>
> > > import org.argunet.gwt.fabridge.client.bridge.BridgeObject;
>
> > > import org.argunet.gwt.fabridge.client.bridge.BridgeParameter;
>
> > > import org.argunet.gwt.fabridge.client.bridge.BridgeParameterObject;
>
> > > import org.argunet.gwt.fabridge.client.events.IInitializationListener;
>
> > > import org.argunet.gwt.fabridge.client.events.ISWFListener;
>
> > > import org.argunet.gwt.fabridge.client.utils.JSNIUtils;
>
> > > import com.google.gwt.core.client.EntryPoint;
>
> > > import com.google.gwt.core.client.JavaScriptObject;
>
> > > import com.google.gwt.user.client.Window;
>
> > > import com.google.gwt.user.client.ui.Button;
>
> > > import com.google.gwt.user.client.ui.ClickListener;
>
> > > import com.google.gwt.user.client.ui.Label;
>
> > > import com.google.gwt.user.client.ui.RootPanel;
>
> > > import com.google.gwt.user.client.ui.Widget;
>
> > > public class FABridgeDemo implements EntryPoint, IInitializationListener
> > > {
>
> > >       private final Button addNewSwf = new Button("Add new SWF");
>
> > >       private final Button removeSwf = new Button("Remove SWF");
>
> > >       private final Button setCheckBox = new Button("Set Checkbox
> > > property");
>
> > >       private final Label sliderLabel = new Label("Slider Label");
>
> > >       private SWFABridgeWidget swfWidget=null;
>
> > >       private final Button createDataGrid = new Button("Create Data
> > > Grid");
>
> > >       /**
>
> > >        * This is the entry point method.
>
> > >        */
>
> > >       public void onModuleLoad() {
>
> > >             RootPanel.get().add(addNewSwf);
>
> > >             RootPanel.get().add(removeSwf);
>
> > >             RootPanel.get().add(setCheckBox);
>
> > >             RootPanel.get().add(sliderLabel);
>
> > >             RootPanel.get().add(createDataGrid);
>
> > >             // adds new swfWidget to rootPanel
>
> > >             addNewSwf.addClickListener(new ClickListener() {
>
> > >                   public void onClick(Widget arg0) {
>
> > >                         // set bridge name for FABridge
>
> > >                       if (swfWidget==null) {
>
> > >                           swfWidget = new
> > > SWFABridgeWidget("app.swf",400,400,"example");
>
> > >                         // add initialization listener
>
> > > swfWidget.addInitializationListener(FABridgeDemo.this);
>
> > >                       }
>
> > >                         // add swfWidget to RootPanel
>
> > >                         RootPanel.get().add(swfWidget);
>
> > >                         //show swf movie
>
> > >                         swfWidget.show();
>
> > >                   }
>
> > >             });
>
> > >             removeSwf.addClickListener(new ClickListener() {
>
> > >             public void onClick(Widget arg0) {
>
> > >               RootPanel.get().remove(swfWidget);
>
> > >             }
>
> > >         });
>
> > >             // changes checkbox status in swfWidget
>
> > >             setCheckBox.addClickListener(new ClickListener() {
>
> > >                   public void onClick(Widget arg0) {
>
> > >                         // get check box
>
> > >                         BridgeObject check =
> > > swfWidget.root().getObject("check");
>
> > >                         // get check box status
>
> > >                         Boolean status = new
> > > Boolean(check.getProperty("selected").getContent().toString());
>
> > >                         // change check box status
>
> > >                         check.setProperty("selected",
> > > !status.booleanValue());
>
> > >                   }
>
> > >             });
>
> > >             // creates new DataGrid in swfWidget
>
> > >             createDataGrid.addClickListener(new ClickListener() {
>
> > >                   public void onClick(Widget arg0) {
>
> > >                         BridgeObject flexApp = swfWidget.root();
>
> > >                         // create new data grid
>
> > >                         BridgeObject grid =
> > > swfWidget.create("mx.controls.DataGrid");
>
> > >                         grid.addRef();
>
> > >                         // create first column
>
> > >                         BridgeObject col1 =
> > > swfWidget.create("mx.controls.dataGridClasses.DataGridColumn");
>
> > >                         col1.addRef();
>
> > >                         col1.setProperty("dataField", "apples");
>
> > >                         // create second column
>
> > >                         BridgeObject col2 =
> > > swfWidget.create("mx.controls.dataGridClasses.DataGridColumn");
>
> > >                         col2.addRef();
>
> > >                         col2.setProperty("dataField", "oranges");
>
> > >                         // add columns to data grid
>
> > >                         JavaScriptObject jsArray = JSNIUtils
>
> > >                                     .convertArray(new JavaScriptObject[]
> > > {
>
> > >                                                 col1.getJSContent(),
> > > col2.getJSContent() });
>
> > >                         grid.setProperty("columns", jsArray);
>
> > >                         grid.setProperty("width", 300);
>
> > >                         // create first row
>
> > >                         BridgeParameterObject row1 = new
> > > BridgeParameterObject();
>
> > >                         row1.addProperty("apples", 12);
>
> > >                         row1.addProperty("oranges", 32);
>
> > >                         // create second row
>
> > >                         BridgeParameterObject row2 = new
> > > BridgeParameterObject();
>
> > >                         row2.addProperty("apples", 15);
>
> > >                         row2.addProperty("oranges", 24);
>
> > >                         // set dataProvider
>
> > >  
>
> ...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to