Layout exception when opening editor [message #119409] |
Fri, 23 January 2009 11:55  |
Eclipse User |
|
|
|
Hi all,
I have the following simple editor:
public class MyEditor extends EditorPart
{
@Override
public void doSave(IProgressMonitor monitor){}
@Override
public void doSaveAs(){}
@Override
public boolean isDirty(){return false;}
@Override
public boolean isSaveAsAllowed(){return false;}
@Override
public void init(IEditorSite site, IEditorInput input) throws
PartInitException
{
setSite(site);
setInput(input);
}
@Override
public void createPartControl(final Composite parent)
{
Composite container = new Composite(parent,SWT.NONE);
container.setLayoutData(GridDataFactory.fillDefaults().grab( true,true).create());
}
@Override
public void setFocus(){}
}
When I open the editor the following exception is thrown:
Jan 23, 2009 11:44:07 PM org.eclipse.rwt.internal.lifecycle.RWTLifeCycle
afterPhaseExecution
SEVERE: Could not execute PhaseListener after phase 'PROCESS_ACTION'.
java.lang.ClassCastException: org.eclipse.swt.layout.GridData cannot be
cast to org.eclipse.swt.layout.FillData
at org.eclipse.swt.layout.FillLayout.flushCache(FillLayout.java :180)
at org.eclipse.swt.widgets.Composite.changed(Composite.java:493 )
at
org.eclipse.swt.internal.graphics.TextSizeDeterminationHandl er$1.doVisit(TextSizeDeterminationHandler.java:79)
at
org.eclipse.swt.internal.widgets.WidgetTreeVisitor$AllWidget TreeVisitor.visit(WidgetTreeVisitor.java:32)
at
org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(Wi dgetTreeVisitor.java:46)
at
org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(Wi dgetTreeVisitor.java:51)
at
org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(Wi dgetTreeVisitor.java:51)
at
org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(Wi dgetTreeVisitor.java:51)
at
org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(Wi dgetTreeVisitor.java:51)
at
org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(Wi dgetTreeVisitor.java:51)
at
org.eclipse.swt.internal.graphics.TextSizeDeterminationHandl er.afterPhase(TextSizeDeterminationHandler.java:126)
at
org.eclipse.rwt.internal.lifecycle.RWTLifeCycle.afterPhaseEx ecution(RWTLifeCycle.java:390)
at
org.eclipse.rwt.internal.lifecycle.RWTLifeCycle.continueLife Cycle(RWTLifeCycle.java:191)
at
org.eclipse.rwt.internal.lifecycle.RWTLifeCycle.sleep(RWTLif eCycle.java:297)
at org.eclipse.swt.widgets.Display.sleep(Display.java:706)
at
org.eclipse.ui.application.WorkbenchAdvisor.eventLoopIdle(Wo rkbenchAdvisor.java:361)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2389)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2347)
at org.eclipse.ui.internal.Workbench.access$5(Workbench.java:22 00)
at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:425)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:408)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:157)
at
com.farbeyond.input.ui.application.DemoEntryPoint.createUI(D emoEntryPoint.java:12)
at
org.eclipse.rwt.internal.lifecycle.EntryPointManager.createU I(EntryPointManager.java:92)
at
org.eclipse.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWT LifeCycle.java:228)
at
org.eclipse.rwt.internal.lifecycle.RWTLifeCycle$UIThreadCont roller.run(RWTLifeCycle.java:116)
at java.lang.Thread.run(Thread.java:619)
What's wrong ?
Regards,
Setya
|
|
|
|
|
|
Re: Layout exception when opening editor [message #119461 is a reply to message #119448] |
Fri, 23 January 2009 13:15   |
Eclipse User |
|
|
|
Originally posted by: benjamin.wolff.web.de
Hi,
the exception is only thrown once because the layout is only created once, when starting the editor for the first time.
regarding the layouting, setting a LayoutData on a composite is also connected to the Layout of its parent composite! the LayoutDate defines how the composite, 'container' in this case, behaves inside
the parent composite. FillLayout is the default Layout when nothing else is set, therefore the parent comp, which is contributed by the method call, has a FillLayout and can't use the GridData of the
container comp. adding the Line
parent.setLayout(GridLayoutFactory.swtDefaults().create());
should avoid the exception if i'm not mistaken.
greetings,
ben
Setya schrieb:
> Hi,
>
> Besides, the exception only thrown when I open the editor for the 1st time.
>
>
> Setya
>
|
|
|
Re: Layout exception when opening editor [message #119474 is a reply to message #119461] |
Fri, 23 January 2009 13:30   |
Eclipse User |
|
|
|
Originally posted by: benjamin.wolff.web.de
i have to correct my last posting, since it is not a good idea to modify the Layout of the parent comp it would be best if you don't set a LayoutData on the container comp. Simply add a GridLayout to
the container comp and use the container to layout the children (buttons etc.) using Grid Layouting. that's how do it.
greetings,
ben
Ben W. schrieb:
> Hi,
>
> the exception is only thrown once because the layout is only created
> once, when starting the editor for the first time.
>
> regarding the layouting, setting a LayoutData on a composite is also
> connected to the Layout of its parent composite! the LayoutDate defines
> how the composite, 'container' in this case, behaves inside the parent
> composite. FillLayout is the default Layout when nothing else is set,
> therefore the parent comp, which is contributed by the method call, has
> a FillLayout and can't use the GridData of the container comp. adding
> the Line
>
> parent.setLayout(GridLayoutFactory.swtDefaults().create());
>
> should avoid the exception if i'm not mistaken.
>
>
> greetings,
> ben
>
>
>
> Setya schrieb:
>> Hi,
>>
>> Besides, the exception only thrown when I open the editor for the 1st
>> time.
>>
>>
>> Setya
>>
|
|
|
|
|
|
Re: Layout exception when opening editor [message #901681 is a reply to message #667170] |
Tue, 14 August 2012 02:58  |
Eclipse User |
|
|
|
Just to avoid other people getting confused like I am. It's no defect here. The thing is you tried to set GridData to a composite that has FillLayout as it layout manager (by default). You need to assign GridLayout to the composite before assigning GridData. That's it.
[Updated on: Tue, 14 August 2012 03:01] by Moderator
|
|
|
Powered by
FUDForum. Page generated in 0.04279 seconds