5245 GUI Designer Toolbar icons missing?

Apologies if I'm behind the times here, but I haven't used the GUI Designer for ages.

I seem to have lost all GUI Designer toolbar and context menu options except 'Preview' and 'Data Binding Wizard'. This makes it difficult to layout and break layout of panels - see attached image.

I can see the GUI Designer icons on the Main Toolbar in the Customize dialog - how can I get them to appear when I'm using the GUI Designer?

Another question - how do I put a TitledBorder onto my GUI? When I try to add it as a Non-Palette Component, it gives me a 'No default constructor' error. Do I have to wrap or subclass it and give it a default constructor?



Attachment(s):
Demetra GUI.JPG
7 comments
Comment actions Permalink

Hello Dave,

DL> Apologies if I'm behind the times here, but I haven't used the GUI
DL> Designer for ages.
DL>
DL> I seem to have lost all GUI Designer toolbar and context menu
DL> options except 'Preview' and 'Data Binding Wizard'. This makes it
DL> difficult to layout and break layout of panels - see attached image.

It is no longer necessary to layout and break layout of panels. You can drop
the components into the grid immediately.

DL> I can see the GUI Designer icons on the Main Toolbar in the
DL> Customize dialog - how can I get them to appear when I'm using the
DL> GUI Designer?

You can't. :)

DL> Another question - how do I put a TitledBorder onto my GUI? When I
DL> try to add it as a Non-Palette Component, it gives me a 'No default
DL> constructor' error. Do I have to wrap or subclass it and give it a
DL> default constructor?

Simply set the "title" subproperty of the "border" property of a container.

--
Dmitry Jemerov
Software Developer
JetBrains, Inc.
http://www.jetbrains.com
"Develop with pleasure!"


0
Comment actions Permalink

It is no longer necessary to layout and break layout
of panels. You can drop
the components into the grid immediately.


OK, thanks Dimitri, that sounds cool!
But I got confused when I found I could only drag one button onto an XYLayout panel, and then it wouldn't preview because a component didn't have a grid layout - and the panel was XYLayout, so I thought it might be the culprit, but I couldn't select any grid layout from its property list, and there were no toolbar options for it... So how do I set a panel to a grid layout when it has an XYLayout?

On a related note, and I think I may be stuck in stupid mode, but if I change a panel with components on it from GridBagLayout to XYLayout, I can no longer add any more components to it. If I try to change it back to GridBagLayout from the properties pane it doesn't accept the change, and if I try to Undo the change, I get an undo message saying "Cannot undo. Some files were changed". However, I can revert to a previous version using Local History.

Is it just me, or is this either somewhat buggy or really unintuitive? I now realise the Help files are no longer relevant for the latest UI Designer, but shouldn't it be a little more user friendly? Shouldn't I be able to add more than one component to an XYLayout panel? Shouldn't I be able to set a panel in GridBagLayout to XYLayout and back again? Or Undo that layout change without an Undo error message or having to use Local History?

Using Local History to undo changes is a nightmare with GUI forms, because all you see two humongous XML files being compared...

Simply set the "title" subproperty of the "border"
property of a container.


OK, this works fine - I never noticed that option - not expecting to find a Title property on a BevelBorder... Is this implemented as a CompoundBorder behind the scenes, or is there some other magic at work?

Is there some documentation of the new UI Designer functionality available?

0
Comment actions Permalink

Hello Dave,

>> It is no longer necessary to layout and break layout
>> of panels. You can drop
>> the components into the grid immediately.
DL> OK, thanks Dimitri, that sounds cool! But I got confused when I
DL> found I could only drag one button onto an XYLayout panel, and then
DL> it wouldn't preview because a component didn't have a grid layout -
DL> and the panel was XYLayout, so I thought it might be the culprit,
DL> but I couldn't select any grid layout from its property list, and
DL> there were no toolbar options for it... So how do I set a panel to a
DL> grid layout when it has an XYLayout?

You can select the new layout manager by changing the "Layout Manager" property.
Some of the layout manager changes can be done only for empty panels.

Why do you need to make such a change? Do you have XYLayout panels left in
forms created in earlier IDEA versions? It should not be necessary to use
XYLayout panels for creating interfaces in this version.

DL> On a related note, and I think I may be stuck in stupid mode, but if
DL> I change a panel with components on it from GridBagLayout to
DL> XYLayout, I can no longer add any more components to it. If I try to
DL> change it back to GridBagLayout from the properties pane it doesn't
DL> accept the change, and if I try to Undo the change, I get an undo
DL> message saying "Cannot undo. Some files were changed". However, I
DL> can revert to a previous version using Local History.

The undo problem is a known bug which will be fixed in the final version
of Demetra.

DL> Is it just me, or is this either somewhat buggy or really
DL> unintuitive? I now realise the Help files are no longer relevant for
DL> the latest UI Designer, but shouldn't it be a little more user
DL> friendly? Shouldn't I be able to add more than one component to an
DL> XYLayout panel? Shouldn't I be able to set a panel in GridBagLayout
DL> to XYLayout and back again? Or Undo that layout change without an
DL> Undo error message or having to use Local History?

The XYLayout is not really much supported in the current version. We'll clear
up the situation with it once we decide to what degree we want to support
it in the final release. It's possible that it'll be dropped altogether.
(That's why I'd like to understand what you're trying to achieve with XYLayout
in the current version.)

>> Simply set the "title" subproperty of the "border" property of a
>> container.
>>
DL> OK, this works fine - I never noticed that option - not expecting to
DL> find a Title property on a BevelBorder... Is this implemented as a
DL> CompoundBorder behind the scenes, or is there some other magic at
DL> work?

No magic here. Simply a TitledBorder wrapped around another border.

DL> Is there some documentation of the new UI Designer functionality
DL> available?

No, because it's so intutive you won't need any documentation for it. :)

Seriously, we're going to provide complete help for the UI Designer in the
final release of Demetra and some Flash demos before that, but if it turns
out that it's not possible to figure things out without the docs or demos,
it means that I have failed in my task of creating a usable UI for designing
forms.

--
Dmitry Jemerov
Software Developer
JetBrains, Inc.
http://www.jetbrains.com
"Develop with pleasure!"


0
Comment actions Permalink

You can select the new layout manager by changing the
"Layout Manager" property.
Some of the layout manager changes can be done only
for empty panels.


Changing the XYLayout property to any other layout doesn't work at all (whether empty or not) for the panels provided by the Dialog Form.

Why do you need to make such a change? Do you have
XYLayout panels left in
forms created in earlier IDEA versions? It should not
be necessary to use
XYLayout panels for creating interfaces in this
version.


XYLayout is what I am given for the main panel when I create a new Dialog Form. I've just tried it with a new dialog - it defaults to XYLayout and will only allow one component to be dragged onto it. Before adding a component, I can change it to any layout - except a grid layout - using the property pane. Once a component is added, the selecting the other layouts gives me an error message telling me it should be empty (which, incidentally, takes 2 mouse clicks to dismiss), but I still can't set a grid layout.

I'm still not quite sure how I got a grid layout the first time - I think I surrounded the default panel in another panel which defaulted to a grid layout, then deleted the original panel... no doubt there is a simpler way, but I couldn't find it.

The XYLayout is not really much supported in the
current version.


So why make it the default layout for the main dialog panels?

(That's why I'd like to understand what you're trying
to achieve with XYLayout
in the current version.)


Apart from not having an initial choice (as described above), my understanding from the earlier GUI Designer version I'd used before (and the obsolete docs) was that using an XYLayout would allow me to position components on the panel and move them around manually to get a rough component layout without spacers, etc. If I can't switch to a grid layout having deliberately (or accidentally) set an XYLayout, then either the XYLayout option should be removed, or it should be fixed so that I can switch back to a grid layout (or any other layout option provided). I don't really see why there is any restriction, but if there is some technical reason for it, perhaps a popup warning message that the layout switch is irreversible?

No magic here. Simply a TitledBorder wrapped around
another border.


OK, so how do I access it, e.g. to change the border title programmatically? Do I call getBorder() on the bordered component and cast the result to TitledBorder?

Oh, and one more question (last one, I promise) - why do I get an "Invalid Input" message box saying "Binding is not unique" after I bind a component (i.e. enter a field name) and then select another? The name I enter is unique, the binding occurs and works OK, but I always get this error message box. I also quite often get an "Invalid Input" error saying "com.intellij.uiDesigner.redComponents.RadAtomicComponent" - which isn't particularly informative, but seems innocuous enough...

0
Comment actions Permalink

See previous comment

0
Comment actions Permalink

Hello Dave,

>> You can select the new layout manager by changing the
>> "Layout Manager" property.
>> Some of the layout manager changes can be done only
>> for empty panels.
DL> Changing the XYLayout property to any other layout doesn't work at
DL> all (whether empty or not) for the panels provided by the Dialog
DL> Form.

In the next build, the dialog template will no longer use XYLayout. It'll
also be possible to change any empty panel to GridLayoutManager.

DL> Once a
DL> component is added, the selecting the other layouts gives me an
DL> error message telling me it should be empty (which, incidentally,
DL> takes 2 mouse clicks to dismiss), but I still can't set a grid
DL> layout.

The duplicate error message is a known bug which will be fixed in one of
the next builds.

DL> Apart from not having an initial choice (as described above), my
DL> understanding from the earlier GUI Designer version I'd used before
DL> (and the obsolete docs) was that using an XYLayout would allow me to
DL> position components on the panel and move them around manually to
DL> get a rough component layout without spacers, etc. If I can't switch
DL> to a grid layout having deliberately (or accidentally) set an
DL> XYLayout, then either the XYLayout option should be removed, or it
DL> should be fixed so that I can switch back to a grid layout
DL> (or any other layout option provided). I don't really see why there
DL> is any restriction, but if there is some technical reason for it,
DL> perhaps a popup warning message that the layout switch is
DL> irreversible?

It's possible that we'll keep the possibility of changing XYLayout to GridLayout,
and make it work in the same way as "Lay Out in a Grid" action in the previous
version.

>> No magic here. Simply a TitledBorder wrapped around another border.
>>
DL> OK, so how do I access it, e.g. to change the border title
DL> programmatically? Do I call getBorder() on the bordered component
DL> and cast the result to TitledBorder?

Right.

DL> Oh, and one more question (last one, I promise) - why do I get an
DL> "Invalid Input" message box saying "Binding is not unique" after I
DL> bind a component (i.e. enter a field name) and then select another?
DL> The name I enter is unique, the binding occurs and works OK, but I
DL> always get this error message box.

Known bug. Steps to reproduce would be helpful.

DL> I also quite often get an
DL> "Invalid Input" error saying
DL> "com.intellij.uiDesigner.redComponents.RadAtomicComponent" - which
DL> isn't particularly informative, but seems innocuous enough...

Also, steps to reproduce would help a lot for this one.


--
Dmitry Jemerov
Software Developer
JetBrains, Inc.
http://www.jetbrains.com
"Develop with pleasure!"


0
Comment actions Permalink

Thanks Dmitry - if I find a way to replicate those errors on demand, I'll post it.

There's one other 'funny' I get - if I leave even a tiny project open in 5245 for a couple of days, I get an 'Out of memory' error. Shutting down and reloading Demetra fixes it.

0

Please sign in to leave a comment.