Reload viewstack child

I am developing a flex application which has a master detail pages. The master page has a list of items in a datagrid and when the user clicks on an item the viewstack child is switched to display the details. I am also using a link bar to navigate back to the master view. However when the user clicks on a different item the child page does not get refreshed.
What is the best way to reload the child view when the user clicks on a datagrid item?

The easiest way is to have a bindable property in your detail View like:
[Bindable]
var user:UserType;
and to bind all of your components to that user object, fe:
<mx:Label id="userName" text="{user.name}" />
And in your ViewStack:
<mx:ViewStack>
     <SomeContainer>
          <mx:DataGrid id="yourDataGrid" ... />
     </SomeContainer>
      <UserDetailView user="{yourDataGrid.selectedItem}"
</mx:ViewStack>
After changing the selection in your dataGrid, a new user object will be automatically binded to the view component.
Of course you may consider a more complex solution with building a model layer containg selectedUser property, but the solution above should work ok.

Similar Messages

  • Delayed Instantiation of ViewStack child in Actionscript

    In my application I dynamically add child elements to a viewstack.
    I know when you hardcode Viewstack children in MXML, delayed instantiation is used, so a tab will only be loaded when the user clicks on it.  When I add a Tab at runtime using the Viewstack addChild() function, it instantiates the tab automatically.  Is there have the viewstack use delayed instantiation when adding tabs to a viewstack in Actionscript?

    In my application I dynamically add child elements to a viewstack.
    I know when you hardcode Viewstack children in MXML, delayed instantiation is used, so a tab will only be loaded when the user clicks on it.  When I add a Tab at runtime using the Viewstack addChild() function, it instantiates the tab automatically.  Is there have the viewstack use delayed instantiation when adding tabs to a viewstack in Actionscript?

  • DataTips always appear in ViewStack container

    I have a Panel container set to a specific width and height.
    Inside this is a ViewStack with percentHeight and
    percentWidth set to 100.
    Each ViewStack child is a VBox with a specific height and
    width set so that it fits in the Panel without scrollbars
    appearing.
    Each VBox contains a List control with percentHeight and
    percentWidth set to 100 and with showDataTips set to true.
    The problem is that the data tips pop up on every item of
    every list regardless of whether they extend beyond the width of
    the VBox or not.
    If I remove the ViewStack from the chain of children, the
    problem disappears.
    It looks to me as though the ViewStack has an unusual way of
    sizing itself compared with other containers and that this could be
    the cause of the problem.
    Does anyone have any ideas how this problem can be resolved.
    Doug

    As you have set a null layout on the content pane, the BorderLayout.CENTER in this code linecontentPane.add(scrollingArea, BorderLayout.CENTER);is ignored.
    As you have not set the bounds (or size and location) of scrollingArea, it is not seen. A null layout will not respect the preferredSize you have set for scrollingArea.
    It's far better that you learn to use Layout managers. There's a good tutorial here:
    The Java&#8482; Tutorials: [Laying Out Components Within a Container|http://java.sun.com/docs/books/tutorial/uiswing/layout/index.html]
    luck, db

  • Runtime error with Navigation lib & spark children in a viewstack

    Hi,
    As you probably know, in Flex 4, you have to wrap a spark component inside a NavigatorContent tag in order to use it as a viewstack child.
    <?xml version="1.0" encoding="utf-8"?>
    <mx:ViewStack xmlns:fx="http://ns.adobe.com/mxml/2009"
                     xmlns:s="library://ns.adobe.com/flex/spark"
                     xmlns:mx="library://ns.adobe.com/flex/mx" width="100%" height="100%" xmlns:local="*" >
         <s:NavigatorContent>
              <local:ASparkComponent />
         </s:NavigatorContent>
         <s:NavigatorContent>
              <local:AnotherSparkComponent />
         </s:NavigatorContent>
    </mx:ViewStack>
    The problem is, if you want to use a waypoint for this viewstack, you'll get a runtime error. The navigation lib considers viewstacks children are Container but this is not true anymore in Flex 4. Viewstack expects its children to implements INavigatorContent.
    I solved the issue by replacing Container references in SelectChildWaypoint with NavigatorContent. This means however, you won't be able to use this class anymore for Flex 3 projects. So I thought it would be better to have 2 classes derived from AbstractWaypoint: one to use for Flex 3 projets and the other one for Flex 4. A runtime version check could be done in the WaypointHandler.createWaypoint method in order to instanciate the good class. Thoughts?

    Wow, this is amazing feedback with a working implementation and an isolated sample!
    I've just committed a fix here. The fix to trunk does get around the issue with abstracting the Container reference on children to IAutomationObject (because the navigation library relies on automationName to find children) and DisplayObject (because in some situation we try to get the default index of a child via Container.getChildIndex(child:DisplayObject)).
    What do you think of this change?
    BTW: the latest trunk versions support both Flex 3 and Flex 4 with conditional compilation. In case we do find other situations where the navigation library needs to behave different between Flex versions, here's an example from the Observer lib on how this can look like:
            CONFIG::Flex4
            protected function delay(e:Error):void
                UIComponent(FlexGlobals.topLevelApplication).callLater(throwException, [e]);
            CONFIG::Flex3
            protected function delay(e:Error):void
                UIComponent(Application.application).callLater(throwException, [e]);

  • How to point to another tab on click of a button in another tab?

    Hi all,
      I am creating an application in which I am using Tabbar and then referring separate canvas for each tab using viewstack.Now I have a button in in one tab and on click of the button i need to open another tab.For reusability i have created separate mxml for each functionality of subtabs.Please help me on how to link the click of button in one tab screen to another tab.
    Thanks in advance.

    I would suggest creating a custom event that contains the index of the tab (viewstack child) you are wanting to move too.  The button would dispatch the event and the tab navigator would require an eventListener to listen for the event type.  The handler for the eventListner would then take the index passed and make the change myViewStack.selectedIndex=2 (or whatever the custom event contained)
    Note:  you could also pass the name of the tab you were wanting to move to and set it that way.
    -Joe

  • Missing Folder in "PeopleTools Portal Structure & Content"

    Greeting,
    Previously
    i have imported a project(created by other developers) and build it, it will automatically exist in fronted.
    But this time i have no luck, i do the same step in another enviroment and it's not exist in frontend, i try to goto
    "PeopleTools > Portal > Structure & Content"
    i realized that my folder for the project is not there, so i try to create it
    But soon i realize that i cant create the folder (error: not unique name)
    It seems like my folder is already exist but just not show in
    "PeopleTools > Portal > Structure & Content"
    What step should i take to bring out my folder?
    Thanks

    If you create a folder, then migrate that folder as part of a project, then it might not show up in Structure and Content in the target system. If that happens, usually deleting app server cache, or waiting 24 hours will clear it up.
    I avoid this problem by migrating the parent folder even if it hasn't changed. By migrating the parent folder, PeopleTools will invalidate the cache for the parent folder that exists in the target, causing it to reload all child folders and content references. This trick works every time.

  • Problem updating JTree via RMI

    I'm programming an Instant Messenger application in Java using RMI extensively. Much like most IM applications, my IM clients display a "buddy list" window upon successful authentication with the server. I have reached a huge stumbling block at this point. My Buddylist JFrame contains a JTree that is used to display the status of the user's buddies (i.e. online, offline). I am able to populate the JTree without any problems BEFORE the JFrame is displayed by using the DefaultTreeModel's insertNodeInto() method. But the problem I'm having is that, once the Buddylist is displayed to the user, I can't successfully update the JTree to reflect changing user status. For example, let's say a user with the screename "qwerty" logs in to the server. Now "qwerty" sees his Buddylist pop up on screen. His Buddylist contains 1 user (for simplicity's sake) with screename "foo". "foo" is currently not logged into the system so "foo" is shown in the Buddylist as a child of node Offline. But right now, let's say that "foo" logs into the system. "qwerty's" Buddylist should be updated to reflect the fact that "foo" just signed in by removing "foo" as a child node of Offline and adding a new node to Online called "foo".
    I currently have this functionality implemented as an RMI callback method on the server side. When "foo" logs in, the server calls the method fireBuddyLoggedOnEvent() with "foo" as the argument. Because "qwerty" is already logged in, and both users are each other's buddy, the statement
         c.getCallback().buddySignedOn(screenname);
    will be executed on the client side. Unfortunately, even though this code is successfully executed remotely, "qwerty's" Buddylist's JTree does not update to show that "foo" is now online. My only suspicion is that this is due to the fact that the Buddylist is already visible and this somehow affects its ability to be updated (remember that I have no problem populating the tree BEFORE it's visible). However, I've weeded out this possibility by creating a test frame in which its JTree is successfully updated, but in response to an ActionEvent in response to a button click. Of course, this test case was not an RMI application and does not come with the complexities of RMI. Please help me resolve this issue as it's preventing me from proceeding with my project.
    ~BTW, sorry for the poor code formatting. I added all the code in wordpad and pasted it in here, which stripped the formatting.
    * Frame that allows the user to enter information to
    * be used to login to the server.
    public class LoginFrame extends JFrame {
         signonButton.addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent e) {
                   if (!screenameTextField.getText().equals("") &&
                   !passwordTextField.getPassword().equals("")) {
                        try {
                             serverInter = (ServerInter) Naming.lookup(serverName);
                             String username = screenameTextField.getText();
                             String password = String.valueOf(passwordTextField.getPassword());
                             int connectionID = serverInter.connect(username, password);
                             System.out.println("authenticate successful");
                             dispose();
                             Buddylist buddyList = new Buddylist(username, connectionID);
                             // Registers the buddylist with the server so that
                             // the server can remotely call methods on the
                             // Buddylist.
                             serverInter.registerCallback(buddyList, connectionID);
                             return;
                             } catch (Exception e1) {
                                  JOptionPane.showMessageDialog(LoginFrame.this, e1.getMessage(),
                                            "Connection Error", JOptionPane.ERROR_MESSAGE);
                                  passwordTextField.setText("");
                                  signonButton.setEnabled(false);
                                  e1.printStackTrace();
         public static void main(String[] args) {
              new LoginFrame();
    public class Buddylist extends JFrame implements BuddylistInter {
         public Buddylist(String username, int connectionID) {
              try {
                   serverInter = (ServerInter) Naming.lookup(serverName);
                   this.username = username;
                   this.connectionID = connectionID;
                   this.setTitle(username + "'s BuddyList");
                   initialize();
                   } catch (Exception e) {
                        e.printStackTrace();
         * Method of interest. Note that this method uses a DynamicTree
         * object as included in the Sun tutorial on JTree's
         * (located at http://www.iam.ubc.ca/guides/javatut99/uiswing/components/tree.html#dynamic).
         * Don't worry too much about where the node is getting added
         * but rather, that i wish to verify that an arbitrary node
         * can successfully be inserted into the tree during this
         * remote method call
         public void buddySignedOn(String screenname) throws RemoteException {
              // should add screename at some location in the tree
              // but doesn't!
              treePanel.addObject(screename);
    * Oversimplified interface for the Buddylist that is intended
    * to be used to allow callbacks to the clientside.
    public interface BuddylistInter extends Remote {
         public void buddySignedOn(String screenname) throws RemoteException;
    * Another oversimplified interface that is to be
    * implemented by the server so that the client can
    * call remote server methods.
    public interface ServerInter extends java.rmi.Remote {
         // "Registers" the given Buddylist with this server to allow
         // remote callbacks on the Buddylist.
         public void registerCallback(Buddylist buddylist, int connectionID)
                             throws RemoteException;
    public class Server extends UnicastRemoteObject implements ServerInter {
         private Vector loggedInUsers = new Vector();
         // Note that this method assumes that a Connection object
         // representing the Buddylist with connectionID was added
         // to the loggedInUsers list during authentication.
         public void registerCallback(Buddylist buddylist, int connectionID) throws RemoteException {          
              int index = loggedInUsers.indexOf(new Connection(connectionID));
              Connection c = (Connection) loggedInUsers.get(index);
              c.setCallback(buddylist);
         // Method that's called whenever a client successfully
         // connects to this server object.
         // screename is the name of the user that successfully
         // logged in.
         private void fireBuddyLoggedOnEvent(String screenname) {
              // Examines each logged in client to determine whether
              // or not that client should be notified of screename's
              // newly logged in status.
              for (int i = 0; i < loggedInUsers.size(); i++) {
                   Connection c = (Connection) loggedInUsers.get(i);
                   if (database1.areBuddies(screenname, c.getUsername())) {
                        try {
                             // getCallback() returns a reference to
                             // the Buddylist that was registered
                             // with this server. At this point,
                             // the server attempts to notify the
                             // client that one of his "buddies" has
                             // just logged into the server.
                             c.getCallback().buddySignedOn(screenname);
                        } catch (RemoteException e) {
                             e.printStackTrace();
    }

    Ok, I deleted all .class files, recomplied, and rmic'd, and I still get the IllegalArgumentException. So I've decided to just post all the code here because I don't want to make an assumption that all the code is correct. Thanks for helping me out with this very stressful problem.
    * Created on Nov 13, 2006
    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.rmi.Naming;
    import java.rmi.NotBoundException;
    import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JPanel;
    import javax.swing.JSeparator;
    import javax.swing.SwingUtilities;
    import javax.swing.tree.DefaultMutableTreeNode;
    public class Buddylist extends JFrame implements BuddylistInter {
         private String serverName = "//Broom:" + "5001" + "/IMServer";
         private DynamicTree treePanel = null;
         private String onlineString = "Online";
         private String offlineString = "Offline";
         private DefaultMutableTreeNode onlineNode = null;
         private DefaultMutableTreeNode offlineNode = null;
         private ImageUpdater imageUpdater = null;
         private javax.swing.JPanel jContentPane = null;
         private ServerInter serverInter = null;
         private String username = null;
         // A connectionID of -1 indicates that this Buddylist
         // has not yet received a valid id from the server.
         private int connectionID = -1;
         private JMenuBar jJMenuBar = null;
         private JMenu jMenu = null;
         private JMenu jMenu1 = null;
         private JMenu jMenu2 = null;
         private JPanel imagePanel = null;
         private JSeparator jSeparator1 = null;
         public Buddylist(String username, int connectionID) {
             try {
                   serverInter = (ServerInter) Naming.lookup(serverName);
                   this.username = username;
                   this.connectionID = connectionID;
                   this.setTitle(username + "'s BuddyList");
                   imageUpdater = new ImageChooser(this);
                   initialize();
                    * This statement is causing an IllegalArgumentException
                    * to be thrown! I've tried inserting it at the beginning
                    * of the constructor and that doesn't help.
                   UnicastRemoteObject.exportObject(this);
              } catch (MalformedURLException e) {
                   e.printStackTrace();
              } catch (RemoteException e) {
                   e.printStackTrace();
              } catch (NotBoundException e) {
                   e.printStackTrace();
          * This method initializes this
          * @return void
         private void initialize() {
              this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
              this.setJMenuBar(getJJMenuBar());
              this.setPreferredSize(new java.awt.Dimension(196,466));
              this.setMinimumSize(new java.awt.Dimension(150,439));
              this.setSize(196, 466);
              this.setContentPane(getJContentPane());
              this.setLocationRelativeTo(null);
              this.setVisible(true);
          * This method initializes jContentPane
          * @return javax.swing.JPanel
         private javax.swing.JPanel getJContentPane() {
              if(jContentPane == null) {
                   jContentPane = new javax.swing.JPanel();
                   jContentPane.setLayout(null);
                   jContentPane.add(getImagePanel(), null);
                   jContentPane.add(getJSeparator1(), null);
                   jContentPane.add(getTreePanel(), null);
              return jContentPane;
         private DynamicTree getTreePanel() {
              if (treePanel == null) {
                   treePanel = new DynamicTree();
                   onlineNode = treePanel.addObject(null, onlineString);
                   offlineNode = treePanel.addObject(null, offlineString);
                   treePanel.setBounds(6, 138, 177, 196);
                   populateTree();
                   return treePanel;
              return null;
         private void populateTree() {
              try {
                   String [] buddies = serverInter.getBuddyList(this.username);
                   for (int i = 0; i < buddies.length; i++) {
                        try {
                             if (serverInter.isBuddyOnline(buddies)) {
                                  treePanel.addObject(onlineNode, buddies[i]);
                             else {
                                  treePanel.addObject(offlineNode, buddies[i]);
                        } catch (RemoteException e1) {
                             e1.printStackTrace();
              } catch (RemoteException e) {
                   e.printStackTrace();
         * This method initializes jJMenuBar     
         * @return javax.swing.JMenuBar     
         private JMenuBar getJJMenuBar() {
              if (jJMenuBar == null) {
                   jJMenuBar = new JMenuBar();
                   jJMenuBar.add(getJMenu());
                   jJMenuBar.add(getJMenu1());
                   jJMenuBar.add(getJMenu2());
              return jJMenuBar;
         * This method initializes jMenu     
         * @return javax.swing.JMenu     
         private JMenu getJMenu() {
              if (jMenu == null) {
                   jMenu = new JMenu();
                   jMenu.setText("My IM");
              return jMenu;
         * This method initializes jMenu1     
         * @return javax.swing.JMenu     
         private JMenu getJMenu1() {
              if (jMenu1 == null) {
                   jMenu1 = new JMenu();
                   jMenu1.setText("People");
              return jMenu1;
         * This method initializes jMenu2     
         * @return javax.swing.JMenu     
         private JMenu getJMenu2() {
              if (jMenu2 == null) {
                   jMenu2 = new JMenu();
                   jMenu2.setText("Help");
              return jMenu2;
         * This method initializes imagePanel     
         * @return javax.swing.JPanel     
         private JPanel getImagePanel() {
              if (imagePanel == null) {
                   imagePanel = new JPanel();
                   imagePanel.setBounds(6, 2, 176, 125);
                   try {
                        BufferedImage bi =
                             ImageIO.read(
                                       getClass().getClassLoader().getResourceAsStream("images/cute_dog.jpg"));
                        Image scaled = bi.getScaledInstance(
                                  imagePanel.getWidth(), imagePanel.getHeight(), BufferedImage.SCALE_FAST);
                        final JLabel imageLabel = new JLabel(new ImageIcon(scaled));
                        imageLabel.setToolTipText("Double click to change image");
                        imagePanel.add(imageLabel, imageLabel.getName());
                        imageLabel.addMouseListener(new java.awt.event.MouseAdapter() {
                             public void mouseClicked(java.awt.event.MouseEvent e) {
                                  if (e.getClickCount() == 2) {
                                       Image selected = imageUpdater.getSelectedImage();
                                       if (selected != null) {
                                            BufferedImage bi = (BufferedImage) selected;
                                            Image scaled = bi.getScaledInstance(
                                                      imageLabel.getWidth(), imageLabel.getHeight(), BufferedImage.SCALE_DEFAULT);
                                            imageLabel.setIcon(new ImageIcon(scaled));
                   } catch (IOException e) {
                        e.printStackTrace();
              return imagePanel;
         * This method initializes jSeparator1     
         * @return javax.swing.JSeparator     
         private JSeparator getJSeparator1() {
              if (jSeparator1 == null) {
                   jSeparator1 = new JSeparator();
                   jSeparator1.setBounds(6, 132, 176, 1);
              return jSeparator1;
         public void buddySignedOn(String screenname) throws RemoteException {
              final String temp = screenname;
              Runnable addBuddy = new Runnable() {
                   public void run() {
                        treePanel.addObject(onlineNode, temp);
              SwingUtilities.invokeLater(addBuddy);
         public void buddySignedOff(String screenname) throws RemoteException {
              // TODO Auto-generated method stub
         public boolean equals(Object o) {
              Buddylist buddylist = (Buddylist) o;
              return connectionID == buddylist.connectionID;
         public int hashCode() {
              return connectionID;
    } // @jve:decl-index=0:visual-constraint="10,11"
    * Created on Nov 4, 2006
    import java.rmi.Remote;
    import java.rmi.RemoteException;
    public interface BuddylistInter extends Remote {
         public void buddySignedOn(String screenname) throws RemoteException;
         public void buddySignedOff(String screenname) throws RemoteException;
    * Created on Oct 14, 2006
    * Models a single endpoint of a connection between machines.
    * @author Josh Feldman
    public class Connection {
         private String username;
         private final int connectionID;
         private Buddylist callback = null;
         public Connection(String username, int connectionID) {
              this.username = username;
              this.connectionID = connectionID;
         public Connection(int connectionID) {
              this.connectionID = connectionID;
         public String getUsername() {
              return username;
         public int getConnectionID() {
              return connectionID;
         public void setCallback(Buddylist buddylist) {
              this.callback = buddylist;
         public Buddylist getCallback() {
              return callback;
         public boolean equals(Object o) {     
              Connection otherConnection = (Connection) o;
              if (otherConnection.getConnectionID() == this.connectionID) {
                   return true;
              else {
                   return false;
         public int hashCode() {
              return connectionID;
    * Created on Nov 4, 2006
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.Serializable;
    import java.util.Properties;
    public class Database implements Serializable{
         private final String regex = ";";
         private Properties db = null;
         private String dbPath = "buddies.txt";
         public Database() throws IOException {
              db = new Properties();
              File buddiesFile = new File(dbPath);
              if (!buddiesFile.canRead()) {
                   throw new IOException("Can't read database!");
              try {
                   FileInputStream fis = new FileInputStream(buddiesFile);
                   db.load(fis);
                   System.out.println("database loaded from file");
              } catch (IOException e) {
                   e.printStackTrace();
                   System.err.println("Can't load the database! Exiting program...");
                   System.exit(0);
          * called when a user adds/deletes a user from the buddylist
         public void changeBuddyList() {
              //TODO
         public boolean doesUserExist(String username) {
              System.out.println(db.getProperty(username));
              return db.getProperty(username) != null;
         public String getPassword(String username) {
              String temp = db.getProperty(username);
              String [] split = temp.split(regex);
              if (split.length == 2)
                   return split[0];
              else {
                   return null;
         public String getBuddies(String username) {
              String temp = db.getProperty(username);
              if (temp == null)
                   return null;
              String [] split = temp.split(regex);
              if (split.length != 2)
                   return null;
              else {
                   return split[1];
          * Determines whether screename1 is a buddy of screename2
          * @return
         public boolean areBuddies(String screename1, String screename2) {
              String [] buddies = getUserBuddies(screename2);
              if (buddies == null) {
                   return false;
              else {
                   for (int i = 0; i < buddies.length; i++) {
                        if (buddies.equals(screename1)) {
                             return true;
              return false;
         public String [] getUserBuddies(String username) {
              System.out.println("in db getUserBuddies: username = " + username);
              String temp = db.getProperty(username);
              if (temp == null)
                   return null;
              String [] split = temp.split(regex);
              if (split.length != 2)
                   return null;
              else {
                   return split[1].split(",");
    import java.awt.GridLayout;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTree;
    import javax.swing.event.TreeModelEvent;
    import javax.swing.event.TreeModelListener;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.DefaultTreeModel;
    import javax.swing.tree.MutableTreeNode;
    import javax.swing.tree.TreePath;
    import javax.swing.tree.TreeSelectionModel;
    // Note that this is not my code but rather code taken
    // from java Sun tutorial
    public class DynamicTree extends JPanel {
        protected DefaultMutableTreeNode rootNode;
        protected DefaultTreeModel treeModel;
        protected JTree tree;
        public DynamicTree() {
            rootNode = new DefaultMutableTreeNode("Root Node");
            treeModel = new DefaultTreeModel(rootNode);
            treeModel.addTreeModelListener(new MyTreeModelListener());
            tree = new JTree(treeModel);
            tree.setRootVisible(false);
            tree.setEditable(false);
            tree.getSelectionModel().setSelectionMode
                    (TreeSelectionModel.SINGLE_TREE_SELECTION);
            tree.setShowsRootHandles(false);
            JScrollPane scrollPane = new JScrollPane(tree);
            setLayout(new GridLayout(1,0));
            add(scrollPane);
        /** Remove all nodes except the root node. */
        public void clear() {
            rootNode.removeAllChildren();
            treeModel.reload();
        /** Remove the currently selected node. */
        public void removeCurrentNode() {
            TreePath currentSelection = tree.getSelectionPath();
            if (currentSelection != null) {
                DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode)
                             (currentSelection.getLastPathComponent());
                MutableTreeNode parent = (MutableTreeNode)(currentNode.getParent());
                if (parent != null) {
                    treeModel.removeNodeFromParent(currentNode);
                    return;
        public void removeObject(DefaultMutableTreeNode child) {
             treeModel.removeNodeFromParent(child);
    //         treeModel.reload();
        /** Add child to the currently selected node. */
        public DefaultMutableTreeNode addObject(Object child) {
            DefaultMutableTreeNode parentNode = null;
            TreePath parentPath = tree.getSelectionPath();
            if (parentPath == null) {
                parentNode = rootNode;
            } else {
                parentNode = (DefaultMutableTreeNode)
                             (parentPath.getLastPathComponent());
            return addObject(parentNode, child, true);
        public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,
                                                Object child) {
            return addObject(parent, child, false);
        public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,
                                                Object child,
                                                boolean shouldBeVisible) {
            DefaultMutableTreeNode childNode =
                    new DefaultMutableTreeNode(child);
            if (parent == null) {
                parent = rootNode;
            treeModel.insertNodeInto(childNode, parent,
                                     parent.getChildCount());
            // Make sure the user can see the lovely new node.
            if (shouldBeVisible) {
                tree.scrollPathToVisible(new TreePath(childNode.getPath()));
            return childNode;
        class MyTreeModelListener implements TreeModelListener {
            public void treeNodesChanged(TreeModelEvent e) {
                DefaultMutableTreeNode node;
                node = (DefaultMutableTreeNode)
                         (e.getTreePath().getLastPathComponent());
                 * If the event lists children, then the changed
                 * node is the child of the node we've already
                 * gotten.  Otherwise, the changed node and the
                 * specified node are the same.
                try {
                    int index = e.getChildIndices()[0];
                    node = (DefaultMutableTreeNode)
                           (node.getChildAt(index));
                } catch (NullPointerException exc) {}
                System.out.println("The user has finished editing the node.");
                System.out.println("New value: " + node.getUserObject());
            public void treeNodesInserted(TreeModelEvent e) {
            public void treeNodesRemoved(TreeModelEvent e) {
            public void treeStructureChanged(TreeModelEvent e) {
        public DefaultTreeModel getModel() {
             return treeModel;
    * Created on Sep 24, 2006
    import java.awt.Frame;
    import java.awt.Image;
    import javax.swing.JComponent;
    * Generic Dialog for allowing a user to browse
    * his filesystem for an image file. Dialog
    * displays a preview of the image (if it is in fact
    * displayable).
    * @author Josh Feldman
    public class ImageChooser extends JComponent implements ImageUpdater{
         private Frame parent = null;
         public ImageChooser(Frame parent) {
              super();
              this.parent = parent;
         public Image getSelectedImage() {
              ImageChooserDialog dialog = new ImageChooserDialog(parent);
              if (dialog.showDialog() == ImageChooserDialog.OK_OPTION) {
                   return dialog.getSelectedImage();
              return null;
    }  //  @jve:decl-index=0:visual-constraint="10,10"
    * Created on Sep 24, 2006
    import java.awt.Frame;
    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import javax.swing.JDialog;
    import javax.swing.ImageIcon;
    import javax.swing.JFileChooser;
    import javax.swing.JPanel;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.JButton;
    * Class that displays a dialog that allows a user
    * to browse his/her filesystem for an image file
    * for selection.
    * @author Josh Feldman
    public class ImageChooserDialog extends JDialog {
         private Frame parent = null;
         private JFileChooser fileChooser = new JFileChooser();
         private int option;
         public final static int OK_OPTION = 1;
         public final static int CANCEL_OPTION = 2;
         private Image selectedImage = null;
         private javax.swing.JPanel jContentPane = null;
         private JPanel previewPanel = null;
         private JLabel jLabel = null;
         private JTextField filenameTextField = null;
         private JButton browseButton = null;
         private JButton cancelButton = null;
         private JButton okButton = null;
         private JLabel previewLabel = null;
          * This is the default constructor
         public ImageChooserDialog(Frame parent) {
              super();
              this.parent = parent;
              this.setTitle("Select Image");
              initialize();
         public ImageChooserDialog(Frame parent, String title) {
              super();
              this.parent = parent;
              this.setTitle(title);
              initialize();
          * This method initializes this
          * @return void
         private void initialize() {
              this.setModal(true);
              this.setSize(377, 246);
              this.setContentPane(getJContentPane());
              this.setVisible(false);
              this.setLocationRelativeTo(parent);
              this.addWindowListener(new java.awt.event.WindowAdapter() {
                   public void windowClosing(java.awt.event.WindowEvent e) {
                        selectedImage = null;
                        option = CANCEL_OPTION;
          * This method initializes jContentPane
          * @return javax.swing.JPanel
         private javax.swing.JPanel getJContentPane() {
              if(jContentPane == null) {
                   jLabel = new JLabel();
                   jContentPane = new javax.swing.JPanel();
                   jContentPane.setLayout(null);
                   jLabel.setBounds(87, 192, 58, 10);
                   jLabel.setText("Preview");
                   jContentPane.add(getPreviewPanel(), null);
                   jContentPane.add(jLabel, null);
                   jContentPane.add(getFilenameTextField(), null);
                   jContentPane.add(getBrowseButton(), null);
                   jContentPane.add(getCancelButton(), null);
                   jContentPane.add(getOkButton(), null);
              return jContentPane;
          * This method initializes previewPanel     
          * @return javax.swing.JPanel     
         private JPanel getPreviewPanel() {
              if (previewPanel == null) {
                   previewPanel = new JPanel();
                   previewLabel = new JLabel();
                   previewPanel.setLayout(null);
                   previewPanel.setLocation(25, 62);
                   previewPanel.setSize(172, 125);
                   previewPanel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
                   previewLabel.setText("");
                   previewLabel.setLocation(2, 2);
                   previewLabel.setSize(172, 125);
                   previewPanel.add(previewLabel, null);
              return previewPanel;
          * This method initializes jTextField     
          * @return javax.swing.JTextField
         private JTextField getFilenameTextField() {
              if (filenameTextField == null) {
                   filenameTextField = new JTextField();
                   filenameTextField.setBounds(26, 17, 212, 23);
                   filenameTextField.setEditable(false);
              return filenameTextField;
          * This method initializes jButton     
          * @return javax.swing.JButton     
         private JButton getBrowseButton() {
              if (browseButton == null) {
                   browseButton = new JButton();
                   browseButton.setBounds(254, 18, 102, 21);
                   browseButton.setText("Browse");
                   browseButton.addActionListener(new java.awt.event.ActionListener() {
                        public void actionPerformed(java.awt.event.ActionEvent e) { 
                             ImageFilter imageFilter = new ImageFilter();
                             fileChooser.setFileFilter(imageFilter);
                             int value = fileChooser.showOpenDialog(ImageChooserDialog.this);
                             if (value == JFileChooser.APPROVE_OPTION) {
                                  File selected = fileChooser.getSelectedFile();
                                  if (selected.canRead()) {
                                       try {
                                            BufferedImage bi = ImageIO.read(selected);
                                            selectedImage = bi;
                                            Image scaled = bi.getScaledInstance(
                                                      previewPanel.getWidth(), previewPanel.getHeight(), BufferedImage.SCALE_FAST);
                                            ImageIcon imageIcon = new ImageIcon(scaled);
                                            previewLabel.setIcon(imageIcon);
                                            filenameTextField.setText(selected.getAbsolutePath());
                                       } catch (IOException e1) {
                                            previewLabel.setText("Preview unavailable...");
                                            selectedImage = null;
                                            e1.printStackTrace();
              return browseButton;
          * This method initializes jButton1     
          * @return javax.swing.JButton     
         private JButton getCancelButton() {
              if (cancelButton == null) {
                   cancelButton = new JButton();
                   cancelButton.setBounds(254, 122, 100, 24);
                   cancelButton.setText("Cancel");
                   cancelButton.addActionListener(new java.awt.event.ActionListener() {
                        public void actionPerformed(java.awt.event.ActionEvent e) {
                             selectedImage = null;
                             option = CANCEL_OPTION;
                             ImageChooserDialog.this.dispose();
              return cancelButton;
          * This method initializes jButton2     
          * @return javax.swing.JButton     
         private JButton getOkButton() {
              if (okButton == null) {
                   okButton = new JButton();
                   okButton.setBounds(256, 159, 97, 24);
                   okButton.setText("OK");
                   okButton.addActionListener(new java.awt.event.ActionListener() {
                        public void actionPerformed(java.awt.event.ActionEvent e) {
                             option = OK_OPTION;
                             ImageChooserDialog.this.dispose();
              return okButton;
          * Displays this chooser dialog.
          * @return - The user selected option
          *                (i.e. OK_OPTION, CANCEL_OPTION)
         public int showDialog() {
              this.setVisible(true);
              return option;
          * Returns the image chosen by the user.
          * @return
         public Image getSelectedImage() {
              return selectedImage;
    import java.io.File;
    import javax.swing.filechooser.FileFilter;
    public class ImageFilter extends FileFilter {
        //Accept all directories and all gif, jpg, tiff, or png files.
        public boolean accept(File f) {
            if (f.isDirectory()) {
                return true;
            String extension = Utils.getExtension(f);
            if (extension != null) {
                if (extension.equals(Utils.tiff) ||
                    extension.equals(Utils.tif) ||
                    extension.equals(Utils.gif) ||
                    extension.equals(Utils.jpeg) ||
                    extension.equals(Utils.jpg) ||
                    extension.equals(Utils.png)) {
                        return true;
                } else {
                    return false;
            return false;
        //The description of this filter
        public String getDescription() {
            return "Just Images";
    * Created on Sep 24, 2006
    import java.awt.Image;
    * Contract that specifies how a class can update
    * the view in its graphical display.
    * @author Josh Feldman
    public interface ImageUpdater {
         public Image getSelectedImage();
    * Created on Nov 4, 2006
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.awt.event.KeyEvent;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.rmi.Naming;
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JTextField;
    public class LoginFrame extends JFrame {
         private String serverName = "//Broom:5001/IMServer";
         private ServerInter serverInter = null;
         // The icon to be used when this frame is minimized
         private Image icon;
         // The main image to be displayed on this frame
         private Image robotImage;
         private javax.swing.JPanel jContentPane = null;
         private JPanel imagePanel = null;
         private JLabel screenameLabel = null;
         private JTextField screenameTextField = null;
         private JPanel jPanel1 = null;
         private JLabel passwordLabel = null;
         private JPasswordField passwordTextField = null;
         private JButton signonButton = null;
         private JButton helpButton = null;
          * This is the default constructor
         public LoginFrame() {
              initialize();
          * This method initializes this
          * @return void
         private void initialize() {
              this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
              this.setResizable(false);
              this.setSize(210, 368);
              this.setContentPane(getJContentPane());
              this.setTitle("Sign On");
              try {
                   this.setIconImage(ImageIO.read(new File("images/robby3.jpg")));
              } catch (IOException e) {
                   e.printStackTrace();
              this.setLocationRelativeTo(null);
              this.setVisible(true);
          * This method initializes jPanel     
          * @return javax.swing.JPanel     
         private JPanel getImagePanel() {
              if (imagePanel == null) {
                   imagePanel = new JPanel();
                   imagePanel.setBounds(7, 7, 190, 159);
                   imagePanel.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.gray,0));
                   try {
                        BufferedImage bi =
                             ImageIO.read(
                                       getClass().getClassLoader().getResourceAsStream("images/robby_big.bmp"));
                        Image scaled = bi.getScaledInstance(190, 169, BufferedImage.SCALE_FAST);
                        JLabel robotLabel = new JLabel(
                                  new ImageIcon(scaled));
                        imagePanel.add(robotLabel);
                   } catch (IOException e) {
                        e.printStackTrace();
              return imagePanel;
          * This method initializes jTextField     
          * @return javax.swing.JTextField     
         private JTextField getScreenameTextField() {
              if (screenameTextField == null) {
                   screenameTextField = new JTextField();
                   screenameTextField.setBounds(22, 208, 168, 20);
                   screenameTextField.addKeyListener(new java.awt.event.KeyAdapter() {  
                        public void keyTyped(java.awt.event.KeyEvent e) {
                             if (!isAllowedCharacter(e.getKeyChar())) {
                                  e.consume();
                                  Toolkit.getDefaultToolkit().beep();
                        public void keyPressed(java.awt.event.KeyEvent e) {
                             int keycode = e.getKeyCode();
                             if(keycode == KeyEvent.VK_ENTER && signonButton.isEnabled()) {
                                  signonButton.doClick();
                                  passwordTextField.setText("");
                             else if (keycode == KeyEvent.VK_ESCAPE) {
                                  dispose();
                                  System.exit(0);
                        public void keyReleased(java.awt.event.KeyEvent e) {
                             String screename = screenameTextField.getText();
                             char [] password = passwordTextField.getPassword();
                             if (screename.equals("") ||
                                       password.length <= 0) {
                                  signonButton.setEnabled(false);
                             else if (!screename.equals("") &&
                                       password.length > 0) {
                                  signonButton.setEnabled(true);
                             clearPasswordArray(password);
              return screenameTextField;
          * This method initializes jPanel1     
          * @return javax.swing.JPanel     
         private JPanel getJPanel1() {
              if (jPanel1 == null) {
                   jPanel1 = new JPanel();
                   jPanel1.setBounds(8, 173, 188, 1);
                   jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.gray,5));
              return jPanel1;
          * This method initializes jPasswordField     
          * @return javax.swing.JPasswordField     
         private JPasswordField getPasswordTextField() {
              if (passwordTextField == null) {
                   passwordTextField = new JPasswordField();
                   passwordTextField.setBounds(20, 259, 170, 20);
                   passwordTextField.addKeyListener(new java.awt.event.KeyAdapter() {
                        public void keyTyped(java.awt.event.KeyEvent e) {
                             if (!isAllowedCharacter(e.getKeyChar())) {
                                  e.consume();
                                  Toolkit.getDefaultToolkit().beep();
                        public void keyPressed(java.awt.event.KeyEvent e) {
                             int keycode = e.getKeyCode();
                             if(keycode == KeyEvent.VK_ENTER && signonButton.isEnabled()) {
                                  signonButton.doClick();
                                  passwordTextField.setText("");
                             else if (keycode == KeyEvent.VK_ESCAPE) {
                                  dispose();
                                  System.exit(0);
                        public void keyReleased(java.awt.event.KeyEvent e) {
                             String screename = screenameTextField.getText();
                             char [] password = passwordTextField.getPassword();
                             if (screename.equals("") ||
                                       password.length <= 0) {
                                  signonButton.setEnabled(false);
                             else if (!screename.equals("") &&
                                       password.length > 0) {
                                  signonButton.setEnabled(true);
                             clearPasswordArray(password);
              return passwordTextField;
          * This method initializes jContentPane
          * @return javax.swing.JPanel
         private javax.swing.JPanel getJContentPane() {
              if(jContentPane == null) {
                   passwordLabel = new JLabel();
                   screenameLabel = new JLabel();
                   jContentPane = new javax.swing.JPanel();
                   jContentPane.setLayout(null);
                   screenameLabel.setBounds(22, 182, 132, 20);
                   screenameLabel.setText("Screename");
                   screenameLabel.setEnabled(true);
                   screenameLabel.setFont(new java.awt.Font("Century Gothic", java.awt.Font.BOLD, 12));
                   passwordLabel.setBounds(21, 238, 135, 17);
                   passwordLabel.setText("Password");
                   jContentPane.add(getImagePanel(), null);
                   jContentPane.add(screenameLabel, null);
                   jContentPane.add(getScreenameTextField(), null);
                   jContentPane.add(getJPanel1(), null);
                   jCon                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             

  • Refreshing a Component Display

    Apologies for the length of the post, but I'm guessing it
    would be useful to set the stage a little for this...
    I have an application that references two components in a
    master/detail layout where one component is the master and the
    other is the detail. Within the master component, I have a combo
    box that specifies the "view" of the data. I expose the selected
    "view" in the component via a public var:String.
    The detail component also has a "view" variable, and within
    the main application mxml (where the components are referenced), I
    specify that the detail components value for "view" equals the
    master's "view" value. All is well so far.
    Now within the detail component I have a viewStack of
    containers which correspond to the number of possible views in the
    master's combo box, and viewStack.selectedChild = this[view].
    So in the end, if I change the value of the combo box in the
    master pane, the viewStack in the detail pane changes
    accordingly... except for one problem. The detail component isn't
    updating immediately when the combo box changes values, but only
    updates with other data being supplied to the detail component is
    updated. What's really odd is that if I display the "view" string
    as a label within the detail component, then it does update as
    expected! But for some reason when the variable is only driving the
    viewStack display, any changes to the "view" variable are ignored
    with respect to the detail component being refreshed.
    Any ideas on why the variable changes are being ignored and
    how to remedy this situation?
    Thanks,
    Josh

    Are the data in the detail component dynamically bound to
    something? The part that confuses me is, "The detail component
    isn't updating immediately when the combo box changes values, but
    only updates with other data being supplied to the detail component
    is updated."
    When you change the ComboBox in the master, does the
    ViewStack in the detail change?
    Are the components within that ViewStack children the ones
    that are not being changed?
    For example, if you are seeing the first ViewStack child and
    change the master ComboBox such that the second ViewStack child
    appears, the components on that second child do not reflect the
    correct data until some other data update happens?

  • Trying to understand ViewStack and child creation

    I'm trying to work with the ViewStack, but keep on getting error 1009, which means that the object I'm trying to use is not created yet. I just dont understand why the object is not created and at which point will it get created.
    The attached code demonstrates my case. First time the combo box is changed, the error is reported and the value of t1.text is not changed. The second time the combo box is changed, the value changes, as it should.
    Now the question is, why is the object null on the first call? How to initialize the value and avoid this problem?
    Thanks.
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init(event)">
    <mx:Script>
         <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.controls.Alert;
            private function init(event:Event) : void
                var arr:Array = new Array();
                arr.push("1", "2", "3");
                combo.dataProvider = new ArrayCollection(arr);
              private function func(event:Event) : void
                try
                     stack.selectedIndex = 1;
                     t1.text = "ok";
                catch(error:Error)
                    Alert.show(error.message);
         ]]>
    </mx:Script>
    <mx:ComboBox id="combo" change="func(event)" />
    <mx:ViewStack id="stack" x="29" y="108">
        <mx:Canvas id="zero" label="zz">
           <mx:TextArea id="t0" text="Zero"/>
        </mx:Canvas>
         <mx:Canvas id="one" label="uno">
            <mx:TextArea id="t1" text="Numero uno"/>
         </mx:Canvas>
         <mx:Canvas id="two" label="duo">
             <mx:TextArea id="t2" text="Number two"/>
         </mx:Canvas>
    </mx:ViewStack>
    </mx:Application>

    Hi,  jake_flex
    when u intally change the combo unless until ur contol not go the view stack component thes inner component are not intialise.
    for that u manually decleare creation policy all of the view stack
    for ur program change the following line
    <mx:ViewStack id="stack" x="29" y="108" creationPlicy="all">
    i think this work.
    if u get sucess then give me mark.
    Thanks
    Niranjan

  • How To Reload The JSF page

    Hi all,
    I am working on an application in which I have three inter-related tables ( Master-Detail-Detail ). I created two forms and one table from the datasources of these Master-Detail-Detail table. I added corresponding createInsert
    and commit operations for each of my form and table on the JSF page. The tables have 3 colums one of which is generated by a sequence in the database. I am displaying that as an output text in my page. When I am creating the new row in that table it is not getting displayed till I reload the page by hitting the url. based on that value I should create the rows in the other tables.
    The application should work in the below fashion
    1. I should able to create a row in the first table using CreateInsert operation. ---> I am able to create and could see the row in the db
    2. I should able to create a row in the second table which is child of first table. Dynamically it should take the value of one of the tables attribute for foreign key. ---> This is happening only if I reload the page manually by hitting
    the url....but not happening if I dont reload it. I guess the Iterator is not getting refreshsed.
    I need to reload the page either programmatically or using ADF Configuration. Please help me in doing that.
    Thanks in Advance

    Did you set up a composite relationship between the master and detail?
    This should take care of automatically bringing in the right master id into new records you are creating in the detail part.
    http://docs.oracle.com/cd/E16162_01/web.1112/e16182/bcentities.htm#sm0150
    Also instead of doing a full page reload, it would probably be better to do a partial page refresh for the section you need to refresh.

  • Parent child tables - how to maintain RI

    Here is my scenario:
    In our model, we have parent child relationship between tables.
    We are not sure how the parent tables are populated. If incremental update, it should be fine (assuming if needed rows will be inserted in the child table manually). If the tables are truncated and data is inserted again – that might be a problem since there exist relationship with child tables. What are the various options for handling such cases?
    Option1: cascade delete
    Option 2: ...?

    I'm not sure I understand the goal here...
    - Are you trying to design a data model? If so, wouldn't the business and data requirements tell you whether you need to truncate and reload the parent table or whether you can do an incremental load? It wouldn't seem to make sense to design a data model with no understanding of how the model is going to be used.
    - Are you trying to design a load process that works with an existing data model? If so, are you trying to design an incremental load? Or a load that involves a truncate and reload? Does the existing data model have foreign key constraints?
    Specifying the Oracle version and a bit of information about the application (i.e. is this an OLTP application, a data warehouse, something else) would probably also be helpful.
    Justin

  • 11g: treeTable child record selection

    Hi,
    I have a (pseudo) model, where entity A is self-referenced and also parent of B, so:
    A 1 - * A
    A 1 - * B
    I'd like to load all As into treeTable, which is not a ploblem. When a record in the treeTable is selected, I need to load detail Bs in a seperate panelFormLayout.
    The problem is, the panelFormLayout only reloads when one of the first level As is selected, but selection of child As has no effect.
    Setting target data source to the same iterator solves the problem with selection, but introduces another one: selected detail is appended to the end of the tree table.
    Any ideas how to do it properly?
    Thanks

    No matter what I tried I just couldn't get it work with business components, so I've taken another approach:
    I create a TreeModel copy of data in A dataView and bind treeView to generated TreeModel. I had to write some snchronization code (currentRow, selection etc.), but so far it seems to work.

  • How to cause a form to reload with a newly created record?

    I hope this is easy and I'm just missing it.
    I have a form based on a table (a "parent" table.). The parent table uses a trigger to generate the PK.
    When a new parent record is created with the form, I want the page to reload with the newly created record still in the form. Then some conditional regions based upon child-tables would appear, with options to populate the detail records.
    My problem is simple: how can I access the value of the primary key of the newly created record once it is submitted to the database, so I can use it to reload that record into the form?
    Thanks very much for your help!

    John - The DML process (Automatic Row Processing) has a Return Key Into Item option. That's what you need.
    Scott

  • Templates not updating child pages

    I am running DM CS3, Version 9.0, Build 3481. When I have the
    HTTP address listed in the box on the Site Definition page (Local
    Info), any changes that I make to a template are not saved in the
    child pages when I save the template. I have the Links set relative
    to Document.
    If I remove the HTTP address from the box in the Site
    Definition page, the template changes will be saved in the child
    pages. If I click to Remote Server and then back to Local Info, the
    HTTP address is inserted back into the HTTP box. I have to remove
    it and hit OKAY and DONE in order to have the template update
    properly.
    I did not have to do this before. I have reloaded DM CS3, so
    maybe a switch is set somewhere to cause this issue. Does anyone
    know how to fix this permanently?
    Regards,
    Bill Schaepe

    MarilynWalker wrote:
    Murray - Can share your book title with us, please?
    Sure. It's Dreamweaver MX Templates by Brad Halstead and myself - ISBN 0-7357-1319-7.  I spend quite a bit of time explaining nested templates.  Sadly, nowhere do I say you should avoid them.  But you should.
    There is a master template that controls top level navigation and then five child templates that give different left-side navigation based on which section of the site the user is in. You can see this in action at www.homerenergy.com.
    You should see how easy this is to do with server-side includes and a single template file.  It's the best of both worlds.
    You can see this in action at www.homerenergy.com.
    Yep.  http://validator.w3.org/unicorn/check?ucn_uri=http://www.homerenergy.com/&ucn_task=conform ance - even if you would leave the nested templates in place, you would sure want to fix those.
    The section-specific navigation is very easy to manage either with template conditionals or with server-side includes.  You can see this site - http://www.ent-sys.com - where I have done the section navigation on interior pages with template conditionals.
    However, your site is small, and simple.  Nested templates can work OK in such circumstances.  But I have never seen a use of nested templates that couldn't be done more simply with some other approach.

  • Apache POST flex2gateway never closes or times out, reaches max child processes

    We have been trying to pass an external PCI scan, and noticed some server lockups after starting a scan.  We are scanning a couple hundred IP addresses, which all resolve to the same servers.  The scans are actively looking for vulnerabilities on the box, and one of which is flash remoting.  When we look at the apache /server-status page, it shows a ton of long running flex2gateway processes.  For instance:
    22-4
    4466
    0/3817/3817
    W
    4.07
    163840
    0
    0.0
    57.76
    57.76
    x.x.x.101
    WebNode2.ambassador.int
    POST /flex2gateway/http HTTP/1.1
    As you can see, this POST request has been running for 163840 seconds, or nearly two days.  Since it seems these POST requests never complete, even though the client has long since disconnected, they simply stack up until the server's max number of child processes has been reached, effectively killing our webserver.
    When I try to restart the clustered coldfusion instances one at a time, these POST requests do not die off.
    If I stop both clustered CF instances, the requests complete (or get killed).
    If I reload or restart apache, the requests are gone as well.
    strace gives me nothing useful:
    [root@WebNode1 ~]# strace -p 34025
    Process 34025 attached - interrupt to quit
    read(185,
    pstack gives a little more, but nothing that looks obvious to me:
    [root@WebNode1 ~]# pstack -p 34025     
    Usage: pstack <process-id>
    [root@WebNode1 ~]# pstack 34025  
    #0  0x00007fdd40444740 in __read_nocancel () from /lib64/libpthread.so.0
    #1  0x00007fdd33efe2e6 in jk_tcp_socket_recvfull () from /opt/coldfusion10/config/wsconfig/1/mod_jk.so
    #2  0x00007fdd33f1b68d in ajp_connection_tcp_get_message () from /opt/coldfusion10/config/wsconfig/1/mod_jk.so
    #3  0x00007fdd33f1ceea in ajp_get_reply () from /opt/coldfusion10/config/wsconfig/1/mod_jk.so
    #4  0x00007fdd33f20308 in ajp_service () from /opt/coldfusion10/config/wsconfig/1/mod_jk.so
    #5  0x00007fdd33ef8f5d in jk_handler () from /opt/coldfusion10/config/wsconfig/1/mod_jk.so
    #6  0x00007fdd41b92cd0 in ap_run_handler ()
    #7  0x00007fdd41b9658e in ap_invoke_handler ()
    #8  0x00007fdd41ba1c50 in ap_process_request ()
    #9  0x00007fdd41b9eac8 in ?? ()
    #10 0x00007fdd41b9a7d8 in ap_run_process_connection ()
    #11 0x00007fdd41ba6ad7 in ?? ()
    #12 0x00007fdd41ba6dea in ?? ()
    #13 0x00007fdd41ba7a6c in ap_mpm_run ()
    #14 0x00007fdd41b7e9b0 in main ()
    I dont know what that tells us exactly, but I'm leaning toward the hangup between apache and tomcat. 
    Any suggestions on where how to troubleshoot this issue?

    On a test server, I have removed the wildcard from the uriworkermap.properties file, so it now only matches "/flex2gateway" and "/flex2gateway/".  Unfortunately I'm still seeing the occasional hung apache worker. 
    Anyone have any leads on this issue?  I don't mind doing the research, I'v just exhausted the limits of my Google Fu.
    Apache Server Status for 10.10.10.205
    Server Version: Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.1e-fips mod_wsgi/3.2 Python/2.6.6 mod_jk/1.2.32 mod_perl/2.0.4 Perl/v5.10.1
    Server Built: Oct 16 2014 14:48:21
    Current Time: Monday, 10-Nov-2014 16:49:22 EST
    Restart Time: Monday, 10-Nov-2014 15:25:16 EST
    Parent Server Generation: 0
    Server uptime: 1 hour 24 minutes 6 seconds
    Total accesses: 5313 - Total Traffic: 98.4 MB
    CPU Usage: u3.97 s1.26 cu0 cs0 - .104% CPU load
    1.05 requests/sec - 20.0 kB/second - 19.0 kB/request
    15 requests currently being processed, 11 idle workers
    WWWWWWW_W_W_W__W__W__WW_W_...................................... ................................................................ ................................................................ ................................................................
    Scoreboard Key:
    "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
    "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
    "C" Closing connection, "L" Logging, "G" Gracefully finishing,
    "I" Idle cleanup of worker, "." Open slot with no current process
    Srv
    PID
    Acc
    M
    CPU
    SS
    Req
    Conn
    Child
    Slot
    Client
    VHost
    Request
    0-0
    8727
    0/12/12
    W
    0.03
    4572
    0
    0.0
    0.05
    0.05
    10.10.2.201
    qc.company.int
    POST /flex2gateway HTTP/1.1
    1-0
    8728
    0/11/11
    W
    0.03
    4358
    0
    0.0
    0.18
    0.18
    10.10.2.201
    qc.company.int
    POST /flex2gateway HTTP/1.1
    2-0
    8729
    0/38/38
    W
    0.04
    3910
    0
    0.0
    1.11
    1.11
    10.10.2.201
    qc.company.int
    POST /flex2gateway HTTP/1.1
    3-0
    8730
    0/27/27
    W
    0.03
    4064
    0
    0.0
    0.79
    0.79
    10.10.2.201
    qc.company.int
    POST /flex2gateway HTTP/1.1
    4-0
    8731
    0/16/16
    W
    0.03
    4354
    0
    0.0
    0.12
    0.12
    10.10.2.201
    qc.company.int
    POST /flex2gateway HTTP/1.1
    5-0
    8732
    0/7/7
    W
    0.02
    4564
    0
    0.0
    0.02
    0.02
    10.10.2.201
    qc.company.int
    POST /flex2gateway HTTP/1.1
    6-0
    8733
    0/8/8
    W
    0.02
    4673
    0
    0.0
    0.01
    0.01
    10.10.2.201
    qc.company.int
    POST /flex2gateway HTTP/1.1
    7-0
    8734
    0/386/386
    0.37
    4
    0
    0.0
    6.49
    6.49
    10.10.2.212
    www.company.qc
    GET /marketingpages/images/login_over.jpg HTTP/1.1
    8-0
    9422
    0/10/10
    W
    0.02
    4564
    0
    0.0
    0.04
    0.04
    10.10.2.201
    qc.company.int
    POST /flex2gateway HTTP/1.1
    9-0
    10112
    0/393/393
    0.37
    6
    0
    0.0
    14.59
    14.59
    10.10.2.212
    www.company.qc
    GET /marketingpages/images/box_onesource.jpg HTTP/1.1
    10-0
    10468
    0/321/321
    W
    0.32
    846
    0
    0.0
    4.42
    4.42
    10.10.2.212
    qc.company.int
    POST /flex2gateway HTTP/1.1
    11-0
    10470
    0/398/398
    0.38
    6
    0
    0.0
    12.80
    12.80
    10.10.2.212
    www.company.qc
    GET /marketingpages/images/home_eco.jpg HTTP/1.1
    12-0
    10471
    0/340/340
    W
    0.32
    837
    0
    0.0
    4.99
    4.99
    10.10.2.212
    qc.company.int
    POST /flex2gateway/ HTTP/1.1
    13-0
    10544
    0/404/404
    0.34
    6
    0
    0.0
    5.21
    5.21
    10.10.2.212
    www.company.qc
    GET /marketingpages/images/box_top.jpg HTTP/1.1
    14-0
    10592
    0/353/353
    0.40
    6
    12
    0.0
    14.10
    14.10
    10.10.2.212
    www.company.qc
    GET /?login HTTP/1.1
    15-0
    10648
    0/296/296
    W
    0.31
    800
    0
    0.0
    3.82
    3.82
    10.10.2.212
    qc.company.int
    POST /flex2gateway/ HTTP/1.1
    16-0
    12382
    0/339/339
    0.33
    6
    0
    0.0
    2.85
    2.85
    10.10.2.212
    www.company.qc
    GET /marketingpages/images/logo_sourceone.jpg HTTP/1.1
    17-0
    12387
    0/336/336
    0.34
    6
    0
    0.0
    5.06
    5.06
    10.10.2.212
    www.company.qc
    GET /marketingpages/images/logo_onesource.jpg HTTP/1.1
    18-0
    12388
    0/265/265
    W
    0.25
    839
    0
    0.0
    2.87
    2.87
    10.10.2.212
    qc.company.int
    POST /flex2gateway/ HTTP/1.1
    19-0
    12389
    0/323/323
    0.31
    0
    0
    0.0
    4.82
    4.82
    10.10.2.212
    www.company.qc
    GET /marketingpages/lib/dimming.js HTTP/1.1
    20-0
    12390
    0/336/336
    0.31
    4
    0
    0.0
    5.24
    5.24
    10.10.2.212
    www.company.qc
    GET /marketingpages/lib/superfish.js HTTP/1.1
    21-0
    12391
    0/289/289
    W
    0.27
    805
    0
    0.0
    2.49
    2.49
    10.10.2.212
    qc.company.int
    POST /flex2gateway/ HTTP/1.1
    22-0
    12392
    0/281/281
    W
    0.27
    831
    0
    0.0
    3.17
    3.17
    10.10.2.212
    qc.company.int
    POST /flex2gateway HTTP/1.1
    23-0
    14750
    0/41/41
    0.04
    6
    0
    0.0
    0.92
    0.92
    10.10.2.212
    www.company.qc
    GET /marketingpages/images/close.jpg HTTP/1.1
    24-0
    14751
    0/43/43
    W
    0.04
    0
    0
    0.0
    1.21
    1.21
    10.10.2.36
    qc.company.int
    GET /server-status HTTP/1.1
    25-0
    14752
    0/40/40
    0.04
    6
    0
    0.0
    0.96
    0.96
    10.10.2.212
    www.company.qc
    GET /marketingpages/images/box_sourceone.jpg HTTP/1.1

Maybe you are looking for

  • Software Systems Engineer (LV, LV RT, LV FPGA, CVI TestStand, Veristand, C/C++) available for full/part time and remote project work

    I am a software engineer with lots of experience in embedded and test systems. I am a certified TestStand developer, and recently finished a cRIO based embedded system for a medical device company using LV RT and LV FPGA. I have done a lot of TestSta

  • Why am I unable to log in to iMessage on my new iPhone 5?

    "After updating my Apple ID info. FaceTime & iMessage logged out of my Apple ID account on both my iPad and iPhone and are not logging back using the same Apple ID claiming that my user name or password was incorrect?! Surprisingly, it's logged in on

  • Sample for JTable & DragnDrop ?

    Hi Folks, did someone illustrate an example (or seen) that shows the use of Drag&Drop and a JTable? # Thanks in Advance cheers

  • Error message- CS4

    I have been getting the following:  'Error creating SWF movie file. Be sure the destination file is not locked or on a locked drive. Also check that hte file name is not too long.'   This started yesterday afternoon at which time i had to force quit

  • Model Object / Business Logic question

    Hello, Question about how to architect the model objects and services in our system. We are defining our own Model Object / Transfer Objects without the use of an ORM tool (long story). Some of these model objects have to maintain Association objects