Creating a custom panel or dialog
There are 3 steps to creating a custom panel or dialog.
First, a mockup of the panel must be created and sliced into 8 png images representing all sides of the panel:
bottomleft.png - bottom left corner
bottommiddle.png - bottom of the panel; this image is repeated horizontally to fill the width of the panel as it is sized
bottomright.png - bottom right corner
left.png - left side of the panel; this image is repeated vertically to fill the height of the panel as it is sized
right.pngĀ - right side of the panel; this image is repeated vertically to fill the height of the panel as it is sized
topleft.png - top left corner
topmiddle.pngĀ - top of the panel; this image is repeated horizontally to fill the width of the panel as it is sized
topright.png - top right corner
Alternatively, a copy can be made of images for an existing panel located under the IFS directory /www/profoundui/htdocs/profoundui/proddata/images/panels, and thenĀ modified.
In addition, a 16 by 16 pixel png icon should be created for the panel. Ā All images should be placed into a subdirectory underĀ /www/profoundui/htdocs/profoundui/proddata/images/panels. Ā The name of the subdirectory will be the name of the panel style.
The second step is to add a panel style by modifying the pui.widgets.panelStyles associative array. Ā Each entry in pui.widgets.panelStyles is an object with name/value pairs; the following are possible names:
left -Ā width of the left side of the panel in pixels (should match the width of the images provided for the left side)
rightĀ -Ā width of the right side of the panel in pixels (should match the width of the images provided for the right side)
top -Ā height of the top side of the panel in pixels, including the title bar if this is a dialog (should match the height of the images provided for the top side)
bottom - height of the bottom side of the panel in pixels (should match the height of the images provided for the bottom side)
background - the background color used for the middle part of the panel
textColor - the default text color for the panel title
textBackground -Ā background color of the panel title inline edit box in the designer
textTopPadding -Ā top padding in pixels for the panel title
textAlign - title alignment (right, left, or center)
fontSize - title font size
noTitle - true or false value indicating whether a title can be assigned to the panel; default value is false
width - overrides default panel width
height - overrides default panel height
dialog - true or false value indicating whether the panel is a dialog; default value is false
The JavaScript syntax for adding a panel style is as follows:
pui.widgets.panelStyles["panel style name"] = {
property1: value1, property2: value2, etc.
}
The "panel style name" will then appear as an option in the Visual Designer under the "panel style" property.
The third and final step is to add an entry into the Widgets Toolbox by using the pui.toolbox.add() API. Ā For more details about this API, refer to the Widgets Development API section of the documentation. Ā Profound UI provides a special function pui.widgets.getPanelProxy() that can automatically create a drag and drop proxy from the custom panel definition. Ā This function should be used for the "proxyHTML" configuration option. Ā The "defaults" configuration option should assign the "panel style" property to the new panel style name.Ā
All JavaScript code should be saved into an external file that is placed in the /www/profoundui/htdocs/profoundui/userdata/custom/widgets IFS directory.
Example:
The following sample JavaScript code creates a custom panel.
// Add a new panel style
pui.widgets.panelStyles["Custom Panel"] = {
left: 10,
right: 10,
top: 33,
bottom: 9,
background: "gray",
textColor: "#000000",
textBackground: "#f6d47a",
textTopPadding: "7px"
}
// Now, add an entry to the Widgets Toolbox
pui.toolbox.add({
category: "Custom Widgets",
widget: "panel",
text: "Custom Panel",
icon: "/profoundui/proddata/images/panels/Custom Panel/icon.png",
proxyHeight: 100,
proxyWidth: 200,
proxyHTML: function(defaults) {
return pui.widgets.getPanelProxy(defaults);
},
defaults: {
"panel style": "Custom Panel",
"color": "#000000"
}
});
Some documentation pages have recently moved to a new section: Profound AppDev. If you are having trouble finding specific pages, try the documentation search capability or reach out to our Support team!