Adding panel with Javascript?

Hi,
I've written a number of script add-ons for InDesign CS2 and managed to get them installed as menu items. But what I'd really like to do is create a new panel with buttons to activate the scripts inside it. Is there any way I can do this with Javascript? (It needs to use JS as the scripts are used on Macs and PCs).
Thanks for any help in advance!

Indeed. This is the code I used, adapted from having found it elsewhere on the net. It doesn't appear to work in CS2, though; CS2 seems to dislike the "targetengine" which sets these things to run permanently in the background.
// MenuInst.jsx
// An InDesign JavaScript
@@@BUILDINFO@@@ "MenuInst.jsx" 1.0.0 1-September-2008
// Installs menu items.
// File needs to get dropped into the startup scripts directory
#targetengine "session"
// Path to where the scripts are being installed
var setpath = "~/Library/Preferences/Adobe InDesign/Version 5.0 ME/Scripts/Scripts Panel/";
var myScript1 = new File(setpath + "ScriptName.jsx");
var myScriptAction1 = app.scriptMenuActions.add("Menu Text");
var myEventListener1 = myScriptAction1.eventListeners.add("onInvoke", myScript1, false);
var myScript2 = new File(setpath + "ScriptName2.jsx");
var myScriptAction2 = app.scriptMenuActions.add("Menu Text 2");
var myEventListener2 = myScriptAction2.eventListeners.add("onInvoke", myScript2, false);
var myScript3 = new File(setpath + "ScriptName3.jsx");
var myScriptAction3 = app.scriptMenuActions.add("Menu Text 3");
var myEventListener3 = myScriptAction3.eventListeners.add("onInvoke", myScript3, false);
var myScript4 = new File(setpath + "ADifferentMenu.jsx");
var myScriptAction4 = app.scriptMenuActions.add("Other Menu Text");
var myEventListener4 = myScriptAction4.eventListeners.add("onInvoke", myScript4, false);
try{
var myScriptMenu = app.menus.item("$ID/Main").submenus.item("First Menu");
myScriptMenu.title;
catch (myError){
var myScriptMenu = app.menus.item("$ID/Main").submenus.add(First Menu");
try{
var myScriptMenu2 = app.menus.item("$ID/Main").submenus.item("Second Menu");
myScriptMenu2.title;
catch (myError){
var myScriptMenu2 = app.menus.item("$ID/Main").submenus.add("Second Menu");
var myScriptMenuItem1 = myScriptMenu.menuItems.add(myScriptAction1);
var myScriptMenuItem2 = myScriptMenu.menuItems.add(myScriptAction2);
var myScriptMenuItem3 = myScriptMenu.menuItems.add(myScriptAction3);
var myScriptMenuItem4 = myScriptMenu2.menuItems.add(myScriptAction4);

Similar Messages

  • Captivate 8 - submit buttons/images no longer showing on devices after adding text with javascript

    I'm working on a Captivate 8 project to publish to devices through PhoneGap. This is working successfully on iPhone and Android so far. I have modified the quiz so I have 2 types of quizzes with 3 levels each without the final score showing at the end (they have to get the answer correct to move on to the next question).  The submit buttons and image I added to each slide has been working perfectly until I added a text caption with a variable to show "Q X of 6" for each question, with X being a variable that increments by 1 for each slide and then I have another script at the end of each level to reset the variable back to 0.  This is working, however the submit button/success message and image on each slide is now not showing.  The submit button appears to still be on the screen as I can click in the same area where the it should be and it works but appears to be faded completely out, and the success message now shows so lightly I can hardly see it. My image does not show at all now.  I've checked the timeline and they are all set the same, to appear for the rest of the slide.  Any ideas?

    actually I think it might be an issue related to upgrading my Mac from Mavericks to Yosemite as the app was working perfectly before. I stripped all the javascript off and repackaged and it's having the same issue so I don't think it's the javascript. I'm going to keep looking into this.

  • Is it possible to create a panel with JavaScript?

    Hi friends
    As I´m studying JavaScript and the user interface creation...would like to ask (more for curiosity):
    Is it possible to create a new panel for Illustrator using JavaScript? Or this is only possible using C++?
    (in the Window Class UI we have the "palette" creation method..so wondering the result of it too)
    Thank you a lot
    Gustavo

    Hi Larry
    Thank you a lot for sharing this reference. This has alternative explanations from the JavaScript Tools Guide that already come with the Extended Script Toolkit SDK (I´m reading this and finding very very useful).
    My question, however, is not covered in any of the manuals.
    I´d like to confirm if a panel (like Brushes, Swatches, Appearance and Layer Illustrator panels) can be made only via C++??? (and not via JavaScript).
    Can I assume the Script UI capabilites in JavaScript can resume itself on creating dialog boxes only (not panels that persist, keep opened in the software, also could be docked in the side of app)?
    Thank you
    Gustavo.

  • ADF query panel with table, adding new search fields dynamically

    I am a beginner very new to ADF world. I have a ADF query panel with table which has its source from a ViewCriteria. I need to add a new search field on the form dynamically based on the user's need. Assume I am using a Employee table and I have search "employee ID" as one field in the form, upon clicking a add button in the form I need to have a another "employee ID" field appears along with the already existing one.
    I tried to add the condition in ViewCriteria but do not know how to add it ?
    Could some one pls address how it can be approached ?

    User, please always tell us your jdev version.
    Well, this use case need some thinking to be done. What do you want to archive with adding a new query field to the panel? As you said you already have one field for employeeId and now, on a click on a button, you add another one. How would the resulting query work with the new field? Should it use 'and' to concatenate the query or should it use 'or'?
    I suggest that you use the ADF Riche Client Demo (http://jdevadf.oracle.com/adf-richclient-demo/faces/index.jspx) select the Query node and then select 'af:query'. This shows you what is possible otu of hte box using the af:query component. You can add fields to existing queries in advanced mode (e.g. use system query 5, which starts with an empty panel and allows you to add fields).
    Once you understand how this works you may come back with a more detailed use case description or you have found the solution already. Read the documentation on af:query along with trying otu the component.
    Timo

  • Automatic Resizing of panel with drawings added to a scrollPane

    I have a Panel with rectangles text and arcs drawn .and it is added to a scrollPane.both vertical and Horizontal scrollbars are enabled for scrollPane.My problem is that i have to draw arcs connecting these rectangles with text enclosed in it. and when i connect two rectangles a span is formed connecting the two..and as hierarchy goes deeper ie connecting spans of already linked rectangles with similar spans..There wont be enough space at top for arc to be drawn..So ive to either readjust all objects related with drawings in panel or is there any other way to increase panel size automatically as drawings need more space..Please suggest me some method for this problem

    Panels Preffered size is set as (3000,1000) and TextRectangles are drawn in panel Cordinates of textRectangle are set in setTextRectangle method and all further drawings connecting rectangle are done by mouse clicks on specific rectangles.
    and layout in setTextRectangle is TextLayout of the text enclosed in rectangles.So when i coordinates for arc drawn exceeds the panel should i call separate method for resetting panel size is that what you have suggested
       screen_Resolution = Toolkit.getDefaultToolkit().
                               getScreenResolution();
             screen_Width = Toolkit.getDefaultToolkit().
                               getScreenSize().width;
             screen_Height = Toolkit.getDefaultToolkit().
                              getScreenSize().height;
    public void setTextRectangle(Graphics g, Font font)
              Graphics2D g2 = (Graphics2D) g;
             FontMetrics metrics= g.getFontMetrics (font);
            int textHeight = metrics.getHeight();
            int left=textHeight;
            int yCordRectangle=(int)(screen_Height/5);
            for (int i = 0; i < layouts.size (); i++) {
                 int top=(int)(screen_Resolution*2);
                 for (int j = 0; j < layouts.get (i).size (); j++) {
                     top += textHeight;
        TextRectangle textRectangle=new TextRectangle(left,yCordRectangle,wrapWidth,top-150);
         addtoarray( textRectangle, rectangles);
        left += wrapWidth + textHeight;
       

  • Failing to refresh LOV fields added in the query panel with table

    Hi.. Iam using Jdev 11.1.1.2.0
    I have a scenario like ..i need to add 2 cascaded lovs in search panel and clicking on search button, the result should be displayed in table form.
    For example..
    I have cascaded LOV fields departmentId and Firstname ,
    first name dropdown values depends on the selection of value in DepartmentIddropdown. I need to add only these 2 fields in search panel and clciking on search buton , the result should be displayed in emp table.
    I have achieved the same creating View criteria with 2 fields and dragging and dropping that as query panel with table. But my problem is First name lov is not populating based on department id. It is showing static dropdown list.
    Please help me how to achieve this ? thanks in advance.
    Regards
    Alekhya.

    Thanks for the reply.. actually if iam using those cascaded lovs in a form then we can set properties as u mentioned to refresh and display values correctly in the dropdown.
    My scenario is like i need to use those fields in query panel header
    code snippet
    <af:panelHeader text="Employees" id="ph1">
    <af:query id="qryId1" headerText="Search" disclosed="true"
    value="#{bindings.EmployeesViewCriteria1Query1.queryDescriptor}"
    model="#{bindings.EmployeesViewCriteria1Query1.queryModel}"
    queryListener="#{bindings.EmployeesViewCriteria1Query1.processQuery}"
    queryOperationListener="#{bindings.EmployeesViewCriteria1Query1.processQueryOperation}"
    resultComponentId="::resId1"/>
    </af:panelHeader>
    Iam not having any field names to add properties.
    Regards
    Alekhya

  • Using Srpy tabbed panels with slidding panels

    I am very new to spry and so I am still just figuring it all
    out. How I found it was I wanted a tabbed panel like the one on the
    IBM website. Anyway, I am trying to
    use the tabbed panels with the sliding panels and it just does not
    seem to be working. I found
    this
    tutorial and followed the codes but it still only works as just the
    tabbed panels - nothing has changed at all. Can someone tell me
    what I might be doing wrong? I am attaching both my html and css
    code for you to inspect.
    HTML Code
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
    Transitional//EN" "
    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="
    http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html;
    charset=utf-8" />
    <title>Untitled Document</title>
    <script
    src="file://///172.16.10.251/users$/kduverna/Desktop/SpryAssets/SpryTabbedPanels.js"
    type="text/javascript"></script>
    <link
    href="file://///172.16.10.251/users$/kduverna/Desktop/SpryAssets/SpryTabbedPanels.css"
    rel="stylesheet" type="text/css" />
    </head>
    <body>
    <div id="TabbedPanels1" class="TabbedPanels">
    <ul class="TabbedPanelsTabGroup">
    <li class="TabbedPanelsTab" tabindex="0"><a
    href=”#Tab1″>Tab 1</a></li>
    <li class="TabbedPanelsTab" tabindex="0"><a
    href=”#Tab1″>Tab 2</a></li>
    </ul>
    <div class="TabbedPanelsContentGroup">
    <div class="TabbedPanelsContent">Content 1</div>
    <div class="TabbedPanelsContent">Content 2</div>
    </div>
    </div>
    <script type="text/javascript">
    <!--
    var TabbedPanels1 = new
    Spry.Widget.TabbedPanels("TabbedPanels1");
    //-->
    </script>
    </body>
    </html>
    css code to follow in post below - too many characters.

    and here is the css code
    CSS Code
    @charset "UTF-8";
    /* SpryTabbedPanels.css - Revision: Spry Preview Release 1.4
    /* Copyright (c) 2006. Adobe Systems Incorporated. All rights
    reserved. */
    /* Horizontal Tabbed Panels
    * The default style for a TabbedPanels widget places all tab
    buttons
    * (left aligned) above the content panel.
    /* This is the selector for the main TabbedPanels container.
    For our
    * default style, this container does not contribute anything
    visually,
    * but it is floated left to make sure that any floating or
    clearing done
    * with any of its child elements are contained completely
    within the
    * TabbedPanels container, to minimize any impact or
    undesireable
    * interaction with other floated elements on the page that
    may be used
    * for layout.
    * If you want to constrain the width of the TabbedPanels
    widget, set a
    * width on the TabbedPanels container. By default, the
    TabbedPanels widget
    * expands horizontally to fill up available space.
    * The name of the class ("TabbedPanels") used in this
    selector is not
    * necessary to make the widget function. You can use any
    class name you
    * want to style the TabbedPanels container.
    .TabbedPanels {
    margin: 0px;
    padding: 0px;
    float: left;
    clear: none;
    width: 100%; /* IE Hack to force proper layout when preceded
    by a paragraph. (hasLayout Bug)*/
    /* This is the selector for the TabGroup. The TabGroup
    container houses
    * all of the tab buttons for each tabbed panel in the
    widget. This container
    * does not contribute anything visually to the look of the
    widget for our
    * default style.
    * The name of the class ("TabbedPanelsTabGroup") used in
    this selector is not
    * necessary to make the widget function. You can use any
    class name you
    * want to style the TabGroup container.
    .TabbedPanelsTabGroup {
    margin: 0px;
    padding: 0px;
    /* This is the selector for the TabbedPanelsTab. This
    container houses
    * the title for the panel. This is also the tab "button"
    that the user clicks
    * on to activate the corresponding content panel so that it
    appears on top
    * of the other tabbed panels contained in the widget.
    * For our default style, each tab is positioned relatively 1
    pixel down from
    * where it wold normally render. This allows each tab to
    overlap the content
    * panel that renders below it. Each tab is rendered with a 1
    pixel bottom
    * border that has a color that matches the top border of the
    current content
    * panel. This gives the appearance that the tab is being
    drawn behind the
    * content panel.
    * The name of the class ("TabbedPanelsTab") used in this
    selector is not
    * necessary to make the widget function. You can use any
    class name you want
    * to style this tab container.
    .TabbedPanelsTab {
    position: relative;
    top: 1px;
    float: left;
    padding: 4px 10px;
    margin: 0px 1px 0px 0px;
    font: bold 0.7em sans-serif;
    background-color: #DDD;
    list-style: none;
    border-left: solid 1px #CCC;
    border-bottom: solid 1px #999;
    border-top: solid 1px #999;
    border-right: solid 1px #999;
    -moz-user-select: none;
    -khtml-user-select: none;
    cursor: pointer;
    /* This selector is an example of how to change the appearnce
    of a tab button
    * container as the mouse enters it. The class
    "TabbedPanelsTabHover" is
    * programatically added and removed from the tab element as
    the mouse enters
    * and exits the container.
    .TabbedPanelsTabHover {
    background-color: #CCC;
    /* This selector is an example of how to change the
    appearance of a tab button
    * container after the user has clicked on it to activate a
    content panel.
    * The class "TabbedPanelsTabSelected" is programatically
    added and removed
    * from the tab element as the user clicks on the tab button
    containers in
    * the widget.
    * As mentioned above, for our default style, tab buttons are
    positioned
    * 1 pixel down from where it would normally render. When the
    tab button is
    * selected, we change its bottom border to match the
    background color of the
    * content panel so that it looks like the tab is part of the
    content panel.
    .TabbedPanelsTabSelected {
    background-color: #EEE;
    border-bottom: 1px solid #EEE;
    /* This selector is an example of how to make a link inside
    of a tab button
    * look like normal text. Users may want to use links inside
    of a tab button
    * so that when it gets focus, the text *inside* the tab
    button gets a focus
    * ring around it, instead of the focus ring around the
    entire tab.
    .TabbedPanelsTab a {
    color: black;
    text-decoration: none;
    /* This is the selector for the ContentGroup. The
    ContentGroup container houses
    * all of the content panels for each tabbed panel in the
    widget. For our
    * default style, this container provides the background
    color and borders that
    * surround the content.
    * The name of the class ("TabbedPanelsContentGroup") used in
    this selector is
    * not necessary to make the widget function. You can use any
    class name you
    * want to style the ContentGroup container.
    .TabbedPanelsContentGroup {
    clear: both;
    border-left: solid 1px #CCC;
    border-bottom: solid 1px #CCC;
    border-top: solid 1px #999;
    border-right: solid 1px #999;
    background-color: #EEE;
    /* This is the selector for the Content panel. The Content
    panel holds the
    * content for a single tabbed panel. For our default style,
    this container
    * provides some padding, so that the content is not pushed
    up against the
    * widget borders.
    * The name of the class ("TabbedPanelsContent") used in this
    selector is
    * not necessary to make the widget function. You can use any
    class name you
    * want to style the Content container.
    .TabbedPanelsContent {
    padding: 4px;
    /* This selector is an example of how to change the appearnce
    of the currently
    * active container panel. The class
    "TabbedPanelsContentVisible" is
    * programatically added and removed from the content element
    as the panel
    * is activated/deactivated.
    .TabbedPanelsContentVisible {
    /* Vertical Tabbed Panels
    * The following rules override some of the default rules
    above so that the
    * TabbedPanels widget renders with its tab buttons along the
    left side of
    * the currently active content panel.
    * With the rules defined below, the only change that will
    have to be made
    * to switch a horizontal tabbed panels widget to a vertical
    tabbed panels
    * widget, is to use the "VTabbedPanels" class on the
    top-level widget
    * container element, instead of "TabbedPanels".
    /* This selector floats the TabGroup so that the tab buttons
    it contains
    * render to the left of the active content panel. A border
    is drawn around
    * the group container to make it look like a list container.
    .VTabbedPanels .TabbedPanelsTabGroup {
    float: left;
    width: 10em;
    height: 20em;
    background-color: #EEE;
    position: relative;
    border-top: solid 1px #999;
    border-right: solid 1px #999;
    border-left: solid 1px #CCC;
    border-bottom: solid 1px #CCC;
    /* This selector disables the float property that is placed
    on each tab button
    * by the default TabbedPanelsTab selector rule above. It
    also draws a bottom
    * border for the tab. The tab button will get its left and
    right border from
    * the TabGroup, and its top border from the TabGroup or tab
    button above it.
    .VTabbedPanels .TabbedPanelsTab {
    float: none;
    margin: 0px;
    border-top: none;
    border-left: none;
    border-right: none;
    /* This selector disables the float property that is placed
    on each tab button
    * by the default TabbedPanelsTab selector rule above. It
    also draws a bottom
    * border for the tab. The tab button will get its left and
    right border from
    * the TabGroup, and its top border from the TabGroup or tab
    button above it.
    .VTabbedPanels .TabbedPanelsTabSelected {
    background-color: #EEE;
    border-bottom: solid 1px #999;
    /* This selector floats the content panels for the widget so
    that they
    * render to the right of the tabbed buttons.
    .VTabbedPanels .TabbedPanelsContentGroup {
    clear: none;
    float: left;
    padding: 0px;
    width: 30em;
    height: 20em;
    /* BEGIN: Spry Horizontal Tabbed Panels meets Sliding Door
    and CSS Sprites */
    /* Revision by Craig Malcolm Petrou of CPMMUG.com */
    .TabbedPanels {
    margin: 10px 0 5px 0;
    .TabbedPanelsTab {
    font-weight: bold;
    font-size: 100%;
    background-color: #FFF;
    border: solid 0 #FFF;
    .TabbedPanelsTabHover {
    background-color: #FFF;
    .TabbedPanelsTabSelected {
    background-color: #FFF;
    border-bottom: 1px solid #FFF;
    position: relative;
    .TabbedPanelsContentGroup {
    background-color: #FFF;
    ul.TabbedPanelsTabGroup a {
    display: block;
    ul.TabbedPanelsTabGroup li.TabbedPanelsTab {
    background: url(/images/brown.png) no-repeat 0 0;
    margin: 0 0 0 -1px;
    padding: 0 0 0 10px;
    ul.TabbedPanelsTabGroup li.TabbedPanelsTab a {
    background: url(/images/brown.png) no-repeat 100% 0;
    padding: 7px 10px 5px 0;
    ul.TabbedPanelsTabGroup li.TabbedPanelsTabSelected {
    background: url(/images/brown.png) no-repeat 0 -41px;
    ul.TabbedPanelsTabGroup li.TabbedPanelsTabSelected a {
    background: url(/images/brown.png) no-repeat 100% -41px;
    /* END: Spry Horizontal Tabbed Panels meets Sliding Door and
    CSS Sprites */
    Also - is there a way to get rounded corners on the tabs in
    spry? Any good tutorials I can follow about spry - more
    specifically about using widgets and effects together.
    Thanks so much

  • Tabbed panel with adjustable/variable height based on content

    Is there anyway that you can create a tabbed panel with adjustable/variable height based on content in each tab?

    Abhishek,
    Thanks for your reply, however, it is not working with Muse. I added the Javascript to the head section and adjusted iframe and it displays as a small square in the upper left hand corner, unable to view the whole page.
    Inserted into head section --
    <script type="text/javascript">
       function resizeIframe(obj)
      obj.style.height = 0;
      obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
       </script>
    inserted as an html object --
    <iframe name="MycoSmooth" src="http://www.mycosmooth.com" frameborder="0" scrolling="no" id="iframe" onload='javascript:resizeIframe(this);' />
    Below is the result:
    The purpose is to have an independent website run the blogging capabilities, since muse doesn't directly support blogging as of yet.
    Since the site is on a different domain, I am running into cross domain issues and it won't get the height of the page. The methods that apparently work use php and I am unsure how that would work in muse, if at all.

  • Displaying custom drawn panels in a panel with FlowLayout vs GridLayout

    I am having trouble to display my custom panels(on which I have drawn) in another panel with FlowLayout. When I use this layout only a small part of their top-left corner appears, when using the GridLayout they are displayed as should, all. Why is this? Is there any way around it?
    The following is the code:
    package diagramillustrator;
    import java.awt.*;
    import java.util.Vector;
    import javax.swing.*;
    public class ClassDiagram extends JPanel
        //fields
        //<editor-fold>
        //general info
        public String title = "class";
        public String name;
        public Vector interfaces;
        public Vector exceptions;
        public String superclass;
        public Vector subClasses;
        public boolean superClass;
        public boolean subClass;
        public String dPackage;
        public String dExtends;
        //variables
        public FieldStructure field;
        //methods
        public MethodStructure constructor;
        public MethodStructure metho;
        //</editor-fold>
        /** Creates a new instance of ClassDiagram */
        public ClassDiagram()
            super();
            super.setSize(132,75);
        protected void paintComponent(Graphics g)
           setBackground(Color.WHITE);
           Graphics2D g2d = (Graphics2D) g;
           super.paintComponent(g2d);
           g2d.setStroke(new BasicStroke(2f));
           g2d.drawRect(1,1,132,25);
           g2d.setFont(new Font("arial", Font.BOLD, 12));
           g2d.drawString(title, 4,18);
           g2d.setColor(Color.LIGHT_GRAY);
           g2d.fillRect(1,25,132,25);
           g2d.setColor(Color.BLACK);
           g2d.drawRect(1,25,132,25);
           g2d.setColor(Color.WHITE);
           g2d.fillRect(1,51,132,25);
           g2d.setColor(Color.BLACK);
           g2d.drawRect(1,50,132,25);
        public static void main(String[] args)
            JFrame f = new JFrame("Testing ClassDiagram");
            f.setSize(500,400);
            //layout shows it correctly
            JPanel panel1 = new JPanel(new GridLayout());
            //layout shows it incorrectly
            //JPanel panel1 = new JPanel(new FlowLayout());
            panel1.setSize(200,200);
            ClassDiagram c1 = new ClassDiagram();
            ClassDiagram c2 = new ClassDiagram();
            ClassDiagram c3 = new ClassDiagram();
            panel1.add(c1);
            panel1.add(c2);
            panel1.add(c3);
            f.add(panel1);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.show();
    }Here is the main method included in the class(the main method is used for testing here) where the adding etc is done.
    public static void main(String[] args)
            JFrame f = new JFrame("Testing ClassDiagram");
            f.setSize(500,400);
            //layout shows it correctly
            JPanel panel1 = new JPanel(new GridLayout());
            //layout shows it incorrectly
            //JPanel panel1 = new JPanel(new FlowLayout());
            panel1.setSize(200,200);
            ClassDiagram c1 = new ClassDiagram();
            ClassDiagram c2 = new ClassDiagram();
            ClassDiagram c3 = new ClassDiagram();
            panel1.add(c1);
            panel1.add(c2);
            panel1.add(c3);
            f.add(panel1);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.show();
        }Please help.
    Thanks,
    AndXer

    Layout managers.
    JPanel panel1 = new JPanel(new GridLayout());GridLayout divides the availabale space into equal cells and expands each child component to fill the cell.
    JPanel panel1 = new JPanel(new FlowLayout());FlowLayout attempts to show each child component at its preferred size. The preferredSize is determined by the layout manager in the process of laying out the children. For a graphic component, ie, a component with no child components, the request for the components preferredSize will return the default size which is 10,10 for JPanel. Therefore you will need to either set the preferredSize for the gtaphic component or override the getPreferredSize method and return the desired Dimension. Another limitation of FlowLayout is that it attempts to lay its children out in&#8211;line.
    GridBagLayout also respects the preferredSize of child components and offers more versatility.
    import java.awt.*;
    import javax.swing.*;
    public class CD extends JPanel
        public String title = "class";
        public CD()
            super();
            setPreferredSize(new Dimension(132,75));
            setBackground(Color.WHITE);
        protected void paintComponent(Graphics g)
            Graphics2D g2d = (Graphics2D) g;
            super.paintComponent(g2d);
            g2d.setStroke(new BasicStroke(2f));
            g2d.drawRect(1,1,130,25);
            g2d.setFont(new Font("arial", Font.BOLD, 12));
            g2d.drawString(title, 4,18);
            g2d.setColor(Color.LIGHT_GRAY);
            g2d.fillRect(1,25,130,25);
            g2d.setColor(Color.BLACK);
            g2d.drawRect(1,25,130,25);
            g2d.setColor(Color.WHITE);
            g2d.fillRect(1,51,130,25);
            g2d.setColor(Color.BLACK);
            g2d.drawRect(1,50,130,25);
        public static void main(String[] args)
            JPanel panel1 = new JPanel(new GridBagLayout());
            // This has little affect until after realization and
            // is then subject to its parent layout manager. Use
            // the preferredSize for better results.
            //panel1.setSize(200,200);
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.insets = new Insets(5,5,5,5);
            gbc.weightx = 1.0;
            gbc.weighty = 1.0;
            // Add some components
            int n = 5;
            // and specify columns
            int cols = 3;
            for(int j = 0; j < n; j++) {
                gbc.gridwidth = ((j+1) % cols == 0) ? GridBagConstraints.REMAINDER
                                                    : 1;
                panel1.add(new CD(), gbc);
            JFrame f = new JFrame("Testing ClassDiagram");
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.add(panel1);
            f.setSize(500,400);
            f.setLocation(200,200);
            f.setVisible(true);
    }

  • Scrolling slow in a panel with 300 images

    Hi,
    I am using a panel which contains about 300 images (small icons).
    I covered this panel with a scroller, and when scrolling, it's very slow.
    when there are less images (about 50), it scrolls smoothly.
    Any suggestions ?
      <s:Panel id="src"
                                   skinClass="SrcSkin"
                                   dragEnter="trashDragEnterHandler(event);"
                                   dragDrop="trashDragDropHandler(event);"
                                   bottom="{bottomBar.height}" width="100%" >
                        <s:Scroller width="100%" height="100%" id="srcScroller" >
                                  <s:Group width="100%" height="100%" id="aaa" verticalCenter="0">
                        ADDING 300 IMAGES HERE AT RUNTIME....
                                            <s:layout>
                                                      <s:TileLayout verticalGap="-50" horizontalGap="11" />
                                            </s:layout>
                                  </s:Group>
                        </s:Scroller>
              </s:Panel>

    Try using a list with itemrenderer for image. Scrolling performance will imporve as the list recycles its renderers.

  • I need to change the sum of a column's total with javascript.

    Hi,
    The HTML output of a SUM column is as follows:
    <td align="center" headers="COST" class="t2data"><b> 827.49</b></td>
    I need to change the sum total with javascript.
    The initial loading of the page SUMs the DB values correctly. Then onchange JS for a couple of factors may change one items COST.
    When that one item's COST changes I need to reSUM the total with JS.
    I was trying the following.. I don't know JS to well.
         var tds = document.getElementsByTagName('td');
         for (var xtd in tds) {
         //alert('Here:'+xtd.headers);
         if (xtd.headers=="COST") {
         // you found the element, do what you need
         alert(xtd.innerHTML);
         After inserting the above code into my javascript is popups up
         my alert, "Here:undefined"
         and never hits the alert(xtd.innerHTML);

    Hi Ya'll,
    I got the following working. See any problems?
    headers=="COST" actually showed up in each row of the whole column, including the SUM. So it ended up being great so I could sum it in the JS.
    I had to change the column type to NUMBER from VARCHAR2 for the initial SUM to work, so adding any formating to the SQL was not good. It looks pretty much what Andy has though... I found a slight hesitation it it though.. I have to work out a bug that prints the old total instead of the first.
    var ltotal =0;
    var tds = document.getElementsByTagName('td');
    for (var k=0; k<tds.length; k++) {
    if (tds[k].headers=="COST") {
    var inputObjs= tds[k].getElementsByTagName('input');
    if(inputObjs.length>0) {
    for (var j=0;j<inputObjs.length;j++) {
    ltotal+= parseFloat(inputObjs[j].value);
    //alert(inputObjs[j].value);
    //alert(ltotal);
    }else{
    tds[k].innerHTML=ltotal;
    Message was edited by:
    changed i to k to avoid the italics
    Bill Carlisle

  • C# control event handling with javascript

    How can I get javascript to execute for "onchange" / "OnSelectedIndexChanged" event instead of a CodeBehind method? I think "OnSelectedIndexChanged" event has to be handled by CodeBehind; but how can I replace that (or onchange) with
    a javascript event handler?
    I have the following in my xyz.ascx file:
    <asp:DropDownList ID="ddlTypeCar" CssClass="BatsRefAddressTypes" runat="server"
                      onchange="javascript: testAlert();"
                      OnSelectedIndexChanged="ddlTypeCar_SelectedIndexChanged"
                      AutoPostBack="True" />
    I could not get the javascript to execute, even though I removed OnSelectedIndexChanged="ddlTypeCar_SelectedIndexChanged" and/or set AutoPostBack="false".
    Additionally, I tried added the following in xyz.ascx.cs Page_Load() method.
    ddlTypeOfAddress.Attributes.Add("onchange", "javascript: testAlert();");
    which didn't help.
    Thanks for your help in advance.

    Hi,
    you can control client events instead of server events with javascript
    look this url for more information
    http://www.w3schools.com/js/js_events.asp
    Regards

  • Add annotations with JavaScript

    Hello,
    I'm currently writing a JavaScript function (that will be executed in a JSP page) to add annotations to PDF files. So far, so good. Actually everything is working as intended except one thing: the position of the annotation. Somehow, it always ends up at position 0,0 (bottom left) of the document with a size of 0, but I know it's there because I can see it in the list of comments. Here is my JavaScript function:
    function annotPdf(src)
         // Create the ActiveXObject
         var pdf = new ActiveXObject('AcroExch.PDDoc');
         // Variables
         var pdfJS;
         var annot;
         var printParams;
         var page;
         var rectSize = new Array();
         // Open PDF
         pdf.Open(src);
         // Determine where to place the annotation
         page = pdf.AcquirePage(0);
         page = page.GetSize();
         rectSize[0] = 25;
         rectSize[1] = page.y - 50;
         rectSize[2] = page.x - 25;
         rectSize[3] = page.y - 25;
         // Get the JSObject
         pdfJS = pdf.GetJSObject();
         // Add the annotation
         pdfJS.addAnnot({page: 0, type: 'FreeText', rect: rectSize, author: 'Automated', contents: 'Test'});
         // Printing
         printParams = pdfJS.getPrintParams();
         printParams.interactive = -1;
         printParams.firstPage = 0;
         printParams.pageHandling = printParams.constants.handling.fit;
         // pdfJS.print(printParams);
         // Save instead of printing for testing
         pdf.Save(1, "C:/Tempo/test.pdf");
         pdf.Close();
    Again, everything works. The annotation is created, but not positioned (as if rect was not doing its job). Now, if I open the same PDF document with Adobe Acrobat 9 and go into the JavaScript Debugger and put:
    this.addAnnot({page: 0, type: 'FreeTest', rect: [25,742,1199,767], author: 'Automated', contents: 'Test'});
    It correctly adds the annotation to the position I want. My theory is that passing an array with Javascript to add an annotation is bugged, because I can do the exact same thing with VB (Pass an array of Integers to rect) and it works perfectly!
    Anyone could help me find a way to make my function work?
    Thanks, Rukk.

    Oops, my bad. It's installed on client not server. My mistake.
    As I said, the ActiveX has no problem to instantiate. That part works. As I said in my first post, I can open my PDF file, add an annotation to it, print it, etc. The problem I have is that I can't decide where to put my annotation (with the rect property). Please refer to my first post.
    Again, thanks for your answer.
    Edit:
    I had to retype it, because when I did copy & paste it added lot of extra blank line (that I wasn't able to delete) and formatting was a bit weird.
    It' a typo.
    Message was edited by: Rukk

  • Custom XMP Panel with "pulldowns" in Bridge

    Hello,
    I have a custom XMP panel built that is visible in Photoshop, InDesign, Illustrator, which is nice.
    I can view this custom XMP panel in Bridge as well, however the fields with pulldown menus don't show in Bridge. Being able to use pulldowns is critical for our workflow...AND I want people to be able to use Bridge for metadata entry. Does anyone have a solution for this?
    I want fields with pulldowns in my custom XMP panel to be viewable and editable in Bridge. Help!!
    Thanks
    Rob

    Bridge's metadata panel only supports plain-text fields for custom metadata. See the following article on how to submit and feature request to Adobe via the feature request form:
    http://kb2.adobe.com/cps/800/e8008c68.html
    I assume you already know that you can open the File Info dialog itself directly within Bridge for a selection of one or more files, yes? The same custom File Info panel that appears in Photoshop's File Info panel will appear in Bridge. To open File Info in Bridge, use the File or thumbnail-contextual menus or the keyboard shortcut Cmd+Opt+Shift+I.
    If you really require a highly customized metadata UI right inside the Bridge window (File Info is a modal dialog box), and you are willing to invest some coding effort, then I suggest using Flex Builder to create a custom Flash Panel for Bridge. You will have to take on some non-trivial work to sync up what's displayed/edited in your custom panel with the current selection of Thumbnails, etc., but such a solution should be technically possible. The Bridge Scripting SDK includes example for how to add a Flash panel, how to get your Flash ActionScript and Bridge JavaScript to talk to each other via the Flash External Interface, and how to use the XMPScript API to modify metadata for files. Again, I think the effort required is non-rivial, but Bridge does provide a platform upon which you can build a highly customized solution.
    -David

  • Re-Rendering the entire panel with components based on list value selection

    Hi,
    I am new to swing.Wondering how to refresh the panel with modified data on selection from list.
    Here's the code I am trying .
    the function below is called withdifferent set of value s being passed in based on add,remove conditions.
    public void initGroupPanelComponents(Vector GroupListData,Object[] sourceItemsArray,Object[] sinkItemsArray)
    groupsPanel = new JPanel();
    groupsPanel.setLayout(null);
    botPanel = new JPanel(new BorderLayout());
    botPanel.setSize(500,600);
    if(sourceItemsArray.length!=0){
    sourceLabel = "New Members:";
    sinkLabel = "New Available";
    System.out.print("color change now!");
    groupsPanel.setBackground(Color.YELLOW);
    botPanel.setBackground(Color.GRAY);
    //revalidate();
    else{
    groupsPanel.setBackground(Color.BLUE);
    botPanel.setBackground(Color.WHITE);
    groupsPanel.setSize( 500, 300 );
    groupsList = new JList(groupNameListData);
    groupsList.setBorder(BorderFactory.createLineBorder(Color.gray));
    groupsList.setBounds(10,10,350,230);
    groupsPanel.add(groupsList);
    groupsList.addListSelectionListener(new groupNameListAction());
    groupsList.setListData(groupNameListData);
    addButton = new JButton("Add");
    addButton.setBounds(385,35,80, 20);
    addButton.addActionListener(new addNewGroupAction());
    removeButton = new JButton("Remove");
    removeButton.setBounds(385, 70, 80, 20);
    groupsPanel.add(addButton);
    groupsPanel.add(removeButton);
    duellist= new DualListPanel(sourceItemsArray, sinkItemsArray, sourceLabel,sinkLabel);
    botPanel.add(duellist);
    botPanel.setBounds(0, 270, 500,600);
    botPanel.setOpaque(true);
    getContentPane().add(groupsPanel);
    groupsPanel.add(botPanel,BorderLayout.SOUTH);
    getContentPane().invalidate();
    getContentPane().validate();
    setResizable(false);
    setVisible(true);
    Relevant suggestions are most welcome.
    Thanks in Advance!

    Thanks much our help.
    But,apperars to me that I have added the groupsList to the panel in the method.
    What I am trying to acheive here is, when a value is selected from the groupsList, accrodingly,in the ListActionListener, Iam trying to repaint the whole Panel with the list component above and duellist panel (a panel with 2 list components by side and buttons at the centre)obtained from dualListPanel Class .
    Appears to work fine the first time when DualListPanel is nstantiated with certain data passed in.But when a particular list value on top is selected, i would require this dualListPanel to be instantiated with a new set of data passed in.This,for some reasons fails to come up.
    Would Appreciate if you could suggest accordingly for this.
    Thanks much again!

Maybe you are looking for

  • While installing oracle apps 11.5.10 the post installion check JSP fails

    Hi Guys, While installing oracle apps 11.5.10 on oracle linux OEL4.7 i am facing one post installation check failure i.e JSP CHECK. even i tried aoljtest its getting fail. I am output of error log file and access log files. Environment: Oracle apps v

  • Alias for the tables in the datesource block

    HI, Is it possible to give an alias to the tables who forms the query of the block, if there are more than one table.

  • TO_DATE function help

    Dear All, I need Output of the following query in the 'JANUARY' or 'JAN' i.e. 'MONTH' or 'MON' format. But following query is returning full date. Could any person help to get me output in MONTH or MON format but SQL should be using TO_DATE function.

  • Filesystem in a webpage

    Hi all, i'm looking to create, or utilize one already made - a java applet that can browse the SERVER's filesystem. (this will be a private, secured webserver) . Does anyone have any information / links to something that sounds like what i'm talking

  • Upgrading to ilife '06 from '05

    SO I have been reading all the issues that people have had in upgrading to Ilife '06 (especially in iphoto). Does anyone have a "best practices" method of what & how to preform a SMOOTH and error free upgrade? I'm on a mac mini with the latest OS upd