How to mimic Eclipse Preferences Windows in Delphi 2010 IDE - eclipse

I'm new to Delphi. I really wanted to build a Preferences Windows in my company legacy system (which uses 'Delphi 2010' today) just like Eclipse's.
I could already mimic almost all the items:
Divided the whole screen in 3 panels (one at the left, one at the right and one at the bottom),
On TTreeView inside the left panel, and one TScrollBox on the panel of the right to be able to scroll things if they don't fit on the window for any reason (low monitor resolution or too much options). Even used a TSplitter between panel on the right and the panel on the left.
Here's what I could get:
My doubt is: what should I do to be able to load multiple options once an item inside the TreeView is selected? What delphi component should I use to mimic all this info in the right panel?

Make a frame for each page. This is kind of a "sub-form" that you can design visually. Create and destroy them at runtime in the appropriate event-handlers of the tree view.

Use a TPageControl. Add a TTabSheet for each group of controls you plan to have — one for each item in the tree control. Set TabVisible := False for each sheet to keep the tabs from appearing at the top of the page control. Each time an item in the tree control is selected, make the corresponding tab sheet visible by setting the page control's ActivePage property. Put controls on the sheets according to the preferences associated with that sheet's category.

Related

MS Access form not centering properly across different monitors

I have an MS Access form where I have the main navigation page set to be centered and it works... kinda.
This form file has to be used on monitors of many different aspect ratios: 3:4, 16:9, and 21:9. When the form opens, it is properly centered in whatever window it opens. But when that window is then maximized, it doesn't re-center and instead sticks to the left side of the screen. Sometimes if I move it between monitors, the form is far 'off screen' in its own window and I have to scroll in the form to bring it into view, then it's stuck on the right hand side of the form.
Is there a way to force the form to re-evaluate what "centered" means?
It depends on how you are centering. The easiest way for objects to be dynamic is to use the form layout tool called "Anchoring". I like to make my layout expand to fill up the window to allow centered objects to remain centered as the window changes.

JavaFX 8, how to hide a pane in Splitpane?

I have a splitpane created from FXML that consists of Three panes left to right. I want to be able to hide the rightmost pane but I can't find anything to hide it. If I turn of the visibility it hides the pane content. What I want is to temporarily hide it, so the pane is removed visually.
As a temporary workaround I move the divider to 100%, but this leaves the divider visible. Another side-effect is that if I resize the main window the divider doesn't stay at the rightmost position.
Any tips on hiding one pane in splitpane?
Or any tips on the best way to achieve this without splitpane(rightmost pane needs to be resizable when not hidden). General pointers to techniques/containers would be appreciated since I'm new to Java/JavaFX but not to programming :)
Seems I've found it, even thought it's not a plain hide/show deal. My splitpane is named "mainSplitPane", and the one I want to hide/show is the third. Upon initialization of the controller I retrieve the third pane and store it in "componentsPane".
Declared in controllerclass:
Node componentsPane;
Called in initialize method of the controllerclass:
componentsPane=mainSplitPane.getItems().get(2);
Code to hide:
mainSplitPane.getItems().remove(componentsPane);
And code to show:
mainSplitPane.getItems().add(2, componentsPane);
mainSplitPane.setDividerPosition(1, 0.8);
A side effect is that I have to set dividerposition since it's removed.

How do I force the eclipse Outline View to request a new ContentOutlinePage?

I have an editor which can supply two different ContentOutlinePages to the outline, depending on the user's choice.
However, when I change the ContentOutlinePage to be displayed, I have to close and reopen the Outline View to see any changes. I understand that the Outline View requests a new ContentOutlinePage when the editor is activated, but is there a way to force it to request a new page at any other time?
I tried just calling
activePage.activate(editor);
where activePage is the active workbench page and editor ist the editor that is currently being displayed, but that didn't work.
Rather than have two content pages you could have one page that can show both of your outlines. To do this you cannot extend the normal ContentOutlinePage, instead you need a class like this:
public class MyContentOutlinePage extends Page
implements IContentOutlinePage, ISelectionChangedListener
The amount of code in the standard ContentOutlinePage is quite small so it is not much extra work to implement a page which meets your needs.
Update:
You would have one top level control containing the SashForm and TreeViewer and always return the top control in getControl(). You would hide either the SashForm or TreeViewer depending on which you want to show.
The top level control could be something like PageBook or a Composite using StackLayout.

Make Dynamic Forms

I'm using Centura / TeamDeveloper 6.1
Is it possible to make the content of a Dialog / Window dynamic?
For example if I load a table inside a tab it is dynamic because the child table always takes the size of the tab.
I want the same behaviour with buttons etc. not that they always change size but that they move their position to stay like in the center no matter how far I resize the window without me having to write a function that calculates everything and that moves them around.
In C++ / QT I would use Layouts.
As it is right now I maximize the Window but the design is stuck on the left side.
Team Developer does not offers support this feature in native way.
however you can design your app to capturing when the formwindow size change and so your visual objects can change their position according the new container size.
there are some samples demonstrating this behaviour.
please, do a search here for "resize" samples

JavaFX 2 custom popup pane

The JavaFX 2 colour picker has a button that pops up a colour chooser pane like so:
I'd like to do something similar, in that I'd like a custom pane to pop up when the button is clicked on and disappear when something else is clicked (in my case, a few image thumbnails). What would be the best way of achieving this? Should I use a ContextMenu and add a pane to a MenuItem somehow, or is there something else I should look at?
It's kind of difficult to do well with the current JavaFX 2.2 API.
Here are some options.
Use a MenuButton with a graphic set in it's MenuItem
This is the approach taken in Button with popup showed below's executable sample code.
Use a PopupControl
Take a look at how the ColorPicker does this in it's code.
ColorPicker extends PopupControl. You could do this, but not all of the API required to build your own PopupControl is currently public. So, for JavaFX 2.2, you would have to rely on internal com.sun classes which are deprecated and will be replaced by public javafx.scene.control classes in JDK8.
Use a ContextMenu
So, I think your idea to "use a ContextMenu and add a pane to a MenuItem" is probably the best approach for now. You should be able to do this by using a CustomMenuItem or setting a graphic on a normal MenuItem. The ContextMenu has nice relative positioning logic. A ContextMenu can also be triggered by a MenuButton.
Use a Custom Dialog
To do this, display a transparent stage at a location relative to the node.
There is some sample code to get you started which I have temporarily linked here.
The sample code does relative positioning to the sides of the main window, but you could update it to perform positioning relative to the sides of a given node (like the ContextMenu's show method).
Use a Glass Pane
To do this, create a StackPane as your root of your main window. Place your main content pane as the first node in the StackPane and then create a Group as the second node in the stackpane, so that it will layer over the top of the main content. Normally, the top group contains nothing, but when you want to show your popup, place it in the top group and translate it to a location relative to the appropriate node in your main content.
You could look at how the anchor nodes in this demo are used to see how this might be adaptable to your context.
Is there a relevant update for this for JavaFX8?
There is not much difference of relevance for Java 8, in general the options are as outlined in this post based on Java 2.2 functionality. Java 8 does add Dialog and Alert functionality, but those are more targeted at use of dialogs with borders, titles and buttons rather than the kind of functionality desired in the question. Perhaps you might be able to start from the Dialog class and heavily customize it to get something close to what is needed, but you are probably better off starting from a blank stage or PopupControl instead.