ViewStacks, Trees, and Changing currentView

I've created a tree that correctly changes my viewstack
without any problem. I now need to be able to change the viewstack
from events within the individual views in the viewstack. While I
can change the currentView variable, it doesnt seem to carry over
to the viewstack like it does with the tree. I've made a simple
program to illustrate my problem.
Main application:
quote:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application pageTitle="ViewStack Test of DOOM"
xmlns:mx="
http://www.adobe.com/2006/mxml"
width="100%" height="100%" backgroundSize="100%"
viewSourceURL="srcview/index.html" xmlns:views="views.*"
xmlns:navigator="navigators.*">
<mx:Script source="/as/navigation.as" />
<mx:HBox width="100%" height="100%">
<mx:Canvas width="180" height="100%" id="box1">
<mx:ViewStack left="5" top="20" bottom="30" right="5"
id="navStack">
<navigator:treeNav id="treeNav" change="currentView =
treeNav.currentView;" />
</mx:ViewStack>
</mx:Canvas>
<mx:ViewStack width="700" height="100%" id="myViewstack"
selectedIndex="{currentView}">
<views:MainView name="Main Page" />
<views:AView name="A Info" />
<views:BView name="B Info" />
<views:CView name="C Info" />
</mx:ViewStack>
</mx:HBox>
</mx:Application>
treeNav.mxml
quote:
<?xml version="1.0" encoding="utf-8"?>
<mx:Box xmlns:mx="
http://www.adobe.com/2006/mxml"
width="100%" height="100%" >
<mx:Tree id="myTreeNav" height="100%" width="100%"
selectedIndex="0" labelField="@label"
dataProvider="{treeNavData}" change="treeChanged(event)"
/>
<mx:XMLList id="treeNavData">
<node label="Main Page" data="0" />
<node label="Information" data="-1">
<node label="Info A" data="1" />
<node label="Info B" data="2" />
<node label="Info C" data="3" />
</node>
</mx:XMLList>
<mx:Script source="../as/navigation.as" />
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;
[Bindable]
public var selectedNode:XML;
public function treeChanged(event:Event):void {
selectedNode=Tree(event.target).selectedItem as XML;
currentView = selectedNode.@data;
if (currentView != -1) {
this.dispatchEvent( new Event("change") );
]]>
</mx:Script>
<mx:Metadata>
[Event("change")]
</mx:Metadata>
</mx:Box>
MainView.mxml (one of the views of the viewstack)
quote:
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox width="100%" height="100%" xmlns:mx="
http://www.adobe.com/2006/mxml"
name="A Info">
<mx:Script source="../as/navigation.as" />
<mx:Button label="Goto A" click="viewChange(1)"/>
<mx:Button label="Goto B" click="viewChange(2)"/>
<mx:Button label="Goto C" click="viewChange(3)"/>
</mx:HBox>
navigation.as
quote:
[Bindable]
public var currentView:Number;
public function viewChange(view:Number):void {
currentView = view;
While the viewChange function is called, it doesn't seem to
effect the currentView that is held in my main application and
therefore the view never changes. My guess is I'm missing some
aspect of variable scope here.

You have several copies of the currentView variable. One in
MainApplication, one in treeNav and one in MainView.mxml.
Where ever navigation.as is included we get one copy of
currentView.
For the same reason you have been forced to do currentView =
treeNav.currentView in the app.
Hence the scenario is not working.
To get it working create a ActionScript class file say
ViewHolder and add a static public currentView property there. Mark
it Bindable and use it everywhere. (Remove currentView declaration
from navigation.as)
public class ViewHolder
[Bindable]
static public var currentView:int;
<mx:ViewStack width="700" height="100%" id="myViewstack"
selectedIndex="{ViewHolder.currentView}">
public function viewChange(view:int):void {
ViewHolder.currentView = view;
public function treeChanged(event:Event):void {
selectedNode=Tree(event.target).selectedItem as XML;
ViewHolder.currentView = selectedNode.@data;
(You can remove the change event from the treeNav too and its
handling in MainApplication.)

Similar Messages

  • Problem with trees and memory handling.

    Hi there, I just want to know if, when I create a large binary tree, and I re-"pointed" the root pointer to another node somewhere below in that same tree (say, a terminal node), will the "upper" parts of the tree (starting from the new root node) be removed/deleted from memory? Please explain your answers.
    Thank you.

    f I changed the root to B, will A and its children be
    deleted from memory?If you do root = B, AND if nothing else is referring to A or C or anything else beneath them, then A, C, and all of C's children will become eligible for garbage collection.
    Whether the memory actually gets cleaned up is something you can't really predict or control, but it doesn't really matter. If it's needed, it will get cleaned up. If it's not needed, it may or may not get cleaned up, but your program won't care.
    So, in short, yes, for all intents and purposes, A's, C's, and C's descendants' memory is released when you re-root to B.

  • Report with ALV tree and ALV list?

    I need to create a report with layout as same as this one
    [http://trangiegie.com/MyFile/output.JPG]
    It looks like a report with combination of ALV tree and list. The tree works like a navigation bar. Wonder if there are any demo programs like this. Will appreciate any help.

    For Tree alone - You can check program : BCALV_TREE_02
    Program Name                   Report title
    BCALV_GRID_DND_TREE            ALV Grid: Drag and Drop with ALV Tree
    BCALV_GRID_DND_TREE_SIMPLE     ALV GRID: Drag and drop with ALV tree (simple)
    BCALV_TEST_COLUMN_TREE         Program BCALV_TEST_COLUMN_TREE
    BCALV_TEST_SIMPLE_TREE         Program BCALV_TEST_SIMPLE_TREE
    BCALV_TREE_01                  ALV Tree Control: Build Up the Hierarchy Tree
    BCALV_TREE_02                  ALV Tree Control: Event Handling
    BCALV_TREE_03                  ALV Tree Control: Use an Own Context Menu
    BCALV_TREE_04                  ALV Tree Control: Add a Button to the Toolbar
    BCALV_TREE_05                  ALV Tree Control: Add a Menu to the Toolbar
    BCALV_TREE_06                  ALV tree control: Icon column and icon for nodes/items
    BCALV_TREE_DEMO                Demo for ALV tree control
    BCALV_TREE_DND                 ALV tree control: Drag & Drop within a hierarchy tree
    BCALV_TREE_DND_MULTIPLE        ALV tree control: Drag & Drop within a hierarchy tree
    BCALV_TREE_EVENT_RECEIVER      Include BCALV_TREE_EVENT_RECEIVER
    BCALV_TREE_EVENT_RECEIVER01
    BCALV_TREE_ITEMLAYOUT          ALV Tree: Change Item Layouts at Runtime
    BCALV_TREE_MOVE_NODE_TEST      Demo for ALV tree control
    BCALV_TREE_SIMPLE_DEMO         Program BCALV_TREE_SIMPLE_DEMO
    BCALV_TREE_VERIFY              Verifier for ALV Tree and Simple ALV Tree

  • Tree and Tree Node Components - Threadinar7

    Hi All,
    This is the seventh in the "Threadinar" series , please see Threadinar6 at
    http://forum.sun.com/jive/thread.jspa?threadID=100601 for details
    In this Threadinar we will focus on the
    "Tree" and "Tree Node" Components
    Let us begin our discussion with the Tree Component.
    Tree Component
    You can drag the Tree component from the Palette's Basic category to the Visual Designer to create a hierarchical tree structure with nodes that can be expanded and collapsed, like the nodes in the Outline window. When the user clicks a node, the row will be highlighted. A tree is often used as a navigation mechanism.
    A tree contains Tree Node components, which act like hyperlinks. You can use a Tree Node to navigate to another page by setting its url property. You can also use a Tree Node to submit the current page. If the the Tree Node's action property is bound to an action event handler, selecting the node automatically submits the page. If the Tree Node's actionListener property is bound to an action listener, opening or closing the node automatically submits the page. You set Tree Node properties in the Tree Node Component Properties window.
    * If you use this component to navigate between pages of a portlet, do not use the url property to link to a page. Instead, use the Navigation editor to set up your links to pages.
    * Events related to tree node selection do not work correctly in portlets because the component uses cookies to pass the selected node id back and forth, and cookies are not correctly handled by the portlet container. You cannot handle tree node selection events in portlet projects.
    Initially when you drop a tree on a page, it has one root node labeled Tree and one subnode labeled Tree Node 1. You can add more nodes by dragging them to the tree and dropping them either on the root node to create top level nodes or on existing nodes to create subnodes of those nodes. You can also right-click the Tree or any Tree Node and choose Add Tree Node to add a subnode to the node.
    Additionally, you can work with the component in the Outline window, where the component and its child components are available as nodes. You can move a node from level to level easily in the Outline window, so you might want to work there if you are rearranging nodes. You can also add and delete tree nodes in the Outline window, just as in the Visual Designer.
    The Tree component has properties that, among other things, enable you change the root node's displayed text, change the appearance of the text, specify if expanding or collapsing a node requires a trip to the server, and specify whether node selection should automatically open or close the tree. To set the Tree's properties, select the Tree component in your page and use the Tree Component Properties window.
    The following Tutorial ("Using Tree Component") is very useful to learn using Tree components
    http://developers.sun.com/prodtech/javatools/jscreator/learning/tutorials/2/sitemaptree.html
    See Also the Technical Article - "Working with the Tree Component and Tree Node Actions"
    http://developers.sun.com/prodtech/javatools/jscreator/reference/techart/2/tree_component.html
    Tree Node Component
    You can drag the Tree Node component from the Palette's Basic category to a Tree component or another tree node in the Visual Designer to create a node in a hierarchical tree structure, similar to the tree you see in the Outline window.
    The tree node is created as a subnode of the node on which you drop it. If you drop the node on the tree component itself, a new node is created as a child of the root node. You can see the hierarchical structure clearly in the Outline window, where you can also easily move nodes around and reparent them.
    You can also add a tree node either to a Tree component or to a Tree Node component by right-clicking the component and choosing Add Tree Node.
    A Tree Node component by default is a container for an image and can be used to navigate to another page, submit the current page, or simply open or close the node if the node has child nodes.
    * If you select the Tree Node component's node Tree Node icon in the Outline window, you can edit its properties in the Tree Node Properties window. You can set things like whether or not the Tree Node is expanded by default, the tooltip for the Tree Node, the label for the tree node, and the Tree Node's identifier in your web application.
    * You can use a Tree Node to navigate to another page by setting its url property. You can also use a Tree Node to submit the current page. If the the Tree Node's action property is bound to an action event handler, selecting the node automatically submits the page. If the Tree Node's actionListener property is bound to an action listener, opening or closing the node automatically submits the page.
    - Note: If you use this component to navigate between pages of a portlet, do not use the url property to link to a page. Instead, use the Navigation editor to set up your links to pages. In addition, events related to tree node selection do not work correctly in portlets because the component uses cookies to pass the selected node id back and forth, and cookies are not correctly handled by the portlet container. You cannot handle tree node selection events in portlet projects.
    * If you select the image in the Tree Node, you can see that its icon property is set to TREE_DOCUMENT. If you right-click the image on the page and choose Set Image, you can either change the icon to another one or choose your own image in the Image Customizer dialog box. For more information on working with an image in a tree node, see Image component.
    - Note: The image used in a tree node works best if it is 16x16 or smaller. Larger images can work, but might appear overlapped in the Visual Designer. You can right-click the component and choose Preview in Browser feature to check the appearance of the images.
    Please share your comments, experiences, additional information, questions, feedback, etc. on these components.
    ------------------------------------------------------------------------------- --------------------

    One challenge I had experience was to make the tree
    always expanded on all pages (I placed my tree menu
    in a page fragment so I can just import it in my
    pages).Did you solve this problem. It would be interesting to know what you did.
    To expand a node you call setExpanded on the node. Here is some code from a tutorial that a coworker of mine is working on.
    In the prerender method:
           Integer expandedPersonId = getRequestBean1().getPersonId();
             // If expandedPersonId is null, then we are not coming back
            // from the Trip page. In that case we do not want any trip
            // nodes to be pre-selected (highlighted) due to browser cookies.
            if (expandedPersonId==null) {
                try {
                    HttpServletRequest req =(HttpServletRequest)
                    getExternalContext().getRequest();
                    Cookie[] cookies = req.getCookies();
                    //Check if cookies are set
                    if (cookies != null) {
                        for (int loop =0; loop < cookies.length; loop++) {
                            if (cookies[loop].getName().equals
                                    ("form1:displayTree-hi")) {
                                cookies[loop].setMaxAge(0);
                                HttpServletResponse response =(HttpServletResponse)
                                getExternalContext().getResponse();
                                response.addCookie(cookies[loop]);
                } catch (Exception e) {
                    error("Failure trying to clear highlighting of selected node:" +
                            e.getMessage());
            }                  ... (in a loop for tree nodes)...
                      personNode.setExpanded(newPersonId.equals
                                    (expandedPersonId));In the action method for the nodes:
           // Get the client id of the currently selected tree node
            String clientId = displayTree.getCookieSelectedTreeNode();
            // Extract component id from the client id
            String nodeId = clientId.substring(clientId.lastIndexOf(":")+1);
            // Find the tree node component with the given id
            TreeNode selectedNode =
                    (TreeNode) this.getForm1().findComponentById(nodeId);
            try {
                // Node's id property is composed of "trip" plus the trip id
                // Extract the trip id and save it for the next page
                Integer tripId = Integer.valueOf(selectedNode.getId().substring(4));
                getRequestBean1().setTripId(tripId);
            } catch (Exception e) {
                error("Can't convert node id to Integer: " +
                        selectedNode.getId().substring(4));
                return null;
    It would also be great if I can set the tree
    readonly where the user cannot toggle the expand
    property of the tree (hope this can be added to the
    tree functionality).

  • Jtree Select node and change leafs icon problem

    Hi All,
    i create a tree and implement a TreeSelectionListener:
    my mission is whenever i select a node i need to change the icon of this node (for now.later i will have to find if it have childrens).
    import java.awt.Color;
    import java.awt.Component;
    import java.util.Enumeration;
    import java.util.NoSuchElementException;
    import java.util.Vector;
    import javax.swing.ImageIcon;
    import javax.swing.JTree;
    import javax.swing.event.TreeExpansionEvent;
    import javax.swing.event.TreeExpansionListener;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.event.TreeSelectionListener;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.DefaultTreeCellRenderer;
    import javax.swing.tree.TreeModel;
    import javax.swing.tree.TreeNode;
    import javax.swing.tree.TreePath;
    public class TreeView{
         DefaultMutableTreeNode top;
         JTree tree ;
         Color frameColor;
         public static ImageIcon NoTSelIcon;
         public static ImageIcon SelIcon;
        public static String[] name= new String[8];
         public TreeView(Color BackColor) {
              // TODO Auto-generated constructor stub
            top =  new DefaultMutableTreeNode("Diagnostics");
            this.frameColor=BackColor;
             SelIcon = createImageIcon("../Resource/Images/Select.gif");
             if (SelIcon == null)
                 System.err.println("Tutorial icon missing; using default.");
             NoTSelIcon = createImageIcon("../Resource/Images/NotSelc.gif");
               if (NoTSelIcon == null)
                 System.err.println("Tutorial icon missing; using default.");
         public Component createTreeComponents(){
                //Create the nodes.
                 createNodes(top);
            //Create a tree that allows one selection at a time.
            tree = new JTree(top);
            //TREE LISTENERS
            //Treeselction listener
            Handler hObject = new Handler();
            tree.addTreeSelectionListener(hObject);
           //Tree expand/collapse listener
            HandlerExpansionListener hObjectExpan = new HandlerExpansionListener();
            tree.addTreeExpansionListener(hObjectExpan);
    //       tree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
            //set tree background
            tree.setBackground(frameColor);
             tree.setCellRenderer(new OverrideTreeCellRenderer(frameColor,SelIcon,NoTSelIcon));
            return tree;
          private void createNodes(DefaultMutableTreeNode top) {
                 DefaultMutableTreeNode category = null;
                 DefaultMutableTreeNode SubCategory = null;
                 DefaultMutableTreeNode SubCategoryBasee = null;
                 DefaultMutableTreeNode SubSubCategoryBasee = null;
                 category = new DefaultMutableTreeNode("Dfe");
                 top.add(category);
                 //Sub test visible
                 SubCategory = new DefaultMutableTreeNode("Test Visible");
                 category.add(SubCategory);
                 SubCategory.add(new DefaultMutableTreeNode("Son 1"));
                 SubCategory.add(new DefaultMutableTreeNode("Son 2"));
                 SubSubCategoryBasee = new DefaultMutableTreeNode("Test Base");
                 SubSubCategoryBasee.add(new DefaultMutableTreeNode("Grandson 1"));
                 SubSubCategoryBasee.add(new DefaultMutableTreeNode("Grandson 2"));
                 SubCategory.add(SubSubCategoryBasee);
          class Handler implements TreeSelectionListener {
                   public void valueChanged(TreeSelectionEvent arg0) {
                        // TODO Auto-generated method stub
                        System.out.println("treeSelect event ");
                        TreePath trph;
                        trph=arg0.getNewLeadSelectionPath();
                        int count=trph.getPathCount();
                        DefaultMutableTreeNode Selnode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
                        String Name = (String)Selnode.getUserObject();
                        setSelected(Selnode,true);
                        int number_ofnodes=getNodeCountBelow((TreeModel)tree.getModel() , Selnode, false);
                        System.out.println("The Number of nodes under "+Name+"="+number_ofnodes);
                        tree.setCellRenderer(new IconRenderer(SelIcon,NoTSelIcon,frameColor));
          class HandlerExpansionListener implements TreeExpansionListener {
                   public void valueChanged(TreeSelectionEvent arg0) {
                        // TODO Auto-generated method stub
                        DefaultMutableTreeNode node = (DefaultMutableTreeNode)  tree.getLastSelectedPathComponent();
                        if (node == null) return;
                      }     // The inner class
                   public void treeCollapsed(TreeExpansionEvent arg0) {
                        // TODO Auto-generated method stub
                        System.out.println("treeCollapsed event ");
                   public void treeExpanded(TreeExpansionEvent arg0) {
                        // TODO Auto-generated method stub
                        System.out.println("treeExpanded event ");
          /** Returns an ImageIcon, or null if the path was invalid. */
             protected static ImageIcon createImageIcon(String path) {
                  //ImageIcon imcon= new ImageIcon(path);
                  //return imcon;
                 java.net.URL imgURL = TreeView.class.getResource(path);
                 if (imgURL != null) {
                     return new ImageIcon(imgURL);
                 } else {
                     System.err.println("Couldn't find file: " + path);
                     return null;
             DefaultMutableTreeNode newnode;
             public void setSelected(DefaultMutableTreeNode Selnode ,boolean isSelected)
                    Enumeration Enchilds=Selnode.children();//ENUMRATE ALL CHILDS FOR THIS NODE
                 if (Enchilds != null)
                      while (Enchilds.hasMoreElements())
                           newnode=(DefaultMutableTreeNode)Enchilds.nextElement();
                           String NameSel = (String)newnode.getUserObject();
                           setSelected(newnode,isSelected);
             //GETTING THE TREE DEPTH
             public int getNodeCountBelow(TreeModel model, Object node, boolean includeInitialNode)
                 int n = includeInitialNode ? 1 : 0;
                 for (int i = 0; i < model.getChildCount(node); i ++)
                     n += getNodeCountBelow(model, model.getChild(node, i), true);
                 return n;
    import java.awt.Color;
    import java.awt.Component;
    import java.util.Enumeration;
    import java.util.NoSuchElementException;
    import javax.swing.Icon;
    import javax.swing.JTree;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.DefaultTreeCellRenderer;
    public class IconRenderer extends DefaultTreeCellRenderer {
         private static final long serialVersionUID = 1L;
         Icon SelectedIcon;
         Icon NotSelectedIcon;
         Color BackgroundColor;
         boolean Selected=false;
         boolean Leaf=false;
         boolean IsItaChild=false;
         DefaultMutableTreeNode SelctedNode=null;
        public IconRenderer(Icon SelIcon,Icon NoTSelIcon,Color Bacground) {
             SelectedIcon = SelIcon;
             NotSelectedIcon = NoTSelIcon;
             BackgroundColor=Bacground;
             setBackgroundNonSelectionColor(BackgroundColor);
        public Component getTreeCellRendererComponent(JTree tree,Object value,boolean sel,boolean expanded,
                                                        boolean leaf,int row,boolean hasFocus)
             super.getTreeCellRendererComponent(tree, value, sel,expanded, leaf, row,hasFocus);
             Selected=sel;
             Leaf=leaf;
             DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
             String s2 = (String)node.getUserObject();
       return this;
    }my problem is :
    when i select a node the the method "getTreeCellRendererComponent"
    start to run on the entire tree from buttom to top and than from top to buttom.
    for me it waste of time because if has say 100 nodes it wont botthers me.
    but i have 20000 nodes and more its take a time.
    and for all this nodes i have to make compares.
    is there a way to force the DefaultTreeCellRenderer to not run the entire tree???
    Thanks

    You need to make sure that your TreeModel interprets your group nodes to be non-leaf nodes (one of the methods in the TreeModel interface is called isLeaf). If you are using a DefaultTreeModel with DefaultMutableTreeNode objects, you can use the askAllowsChildren property of DefaultTreeModel and the allowsChildren property of DefaultMutableTreeNode to control this. See the API for more details:
    http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/tree/DefaultTreeModel.html
    http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/tree/DefaultMutableTreeNode.html

  • Macking button to expand the tree and collapse tree and another to add node

    macking button to expand the tree and collapse tree and another to add node and saving the changes in the database ( this is problem)
    and finally delete node from database
    so what is proper code for those buttons
    thanks my mail is :
    [email protected]

    Hello,
    Use the ftree package's functions
    code to expand all nodes:
    PROCEDURE explose_tree IS
    node    ftree.node;
    htree   ITEM;
    state   varchar2(30);
    BEGIN
       -- search the tree ID --
       htree := Find_Item('BL_TREE.TREE_1');
        -- search the root --
           node  := Ftree.Find_Tree_Node(htree, '');
        -- expand all nodes --
       WHILE NOT Ftree.ID_NULL(node) LOOP
          state := Ftree.Get_Tree_Node_Property(htree, node, Ftree.NODE_STATE);
          IF state = Ftree.COLLAPSED_NODE THEN
            Ftree.Set_Tree_Node_Property(htree, node, Ftree.NODE_STATE, Ftree.EXPANDED_NODE);
          END IF;
          node := Ftree.Find_Tree_Node(htree, '', ftree.find_NEXT,Ftree.NODE_LABEL,'', node);
       END LOOP;
    END;and to collapse all nodes:
    PROCEDURE Implose_tree IS
       node   ftree.node;
       htree  ITEM;
       state  varchar2(30);
    BEGIN
       -- search the root ID --
       htree := Find_Item('BL_TREE.TREE_1'); 
       -- search the root --
       node  := Ftree.Find_Tree_Node(htree, '');  
       -- Collapse all nodes --
       WHILE NOT ftree.ID_NULL(node) LOOP
         state := Ftree.Get_Tree_Node_Property(htree, node, Ftree.NODE_STATE);
         IF state = Ftree.EXPANDED_NODE THEN
          Ftree.Set_Tree_Node_Property(htree, node, Ftree.NODE_STATE, Ftree.COLLAPSED_NODE);
         END IF;
        node := Ftree.Find_Tree_Node(htree, '', Ftree.FIND_NEXT,Ftree.NODE_LABEL, '', node);
       END LOOP;
    END; Francois

  • [svn:fx-trunk] 10209: reverting commit 10198, which affected animation for some halo components like Tree and ComboBox.

    Revision: 10209
    Author:   [email protected]
    Date:     2009-09-12 17:36:41 -0700 (Sat, 12 Sep 2009)
    Log Message:
    reverting commit 10198, which affected animation for some halo components like Tree and ComboBox. Should wait for either the real fix (involves RPC changes) or at least a fix that limits the scope to only Flex4 effects instead of all uses of UIComponent.suspendBackgroundProcessing.
    Modified Paths:
        flex/sdk/trunk/frameworks/projects/framework/src/mx/managers/LayoutManager.as

  • Trees and Unmanaged Dropdown Lists

    Does anybody know if it's possible to create heirarchical property value lists? For example, we want to have a keyword system for documents and users with some top-level categories and then some more specific categories under them, and not just one long unorganized list. Is this possible to do using trees and/or unmanaged dropdown lists? I'm not sure how to make these. Do you have to insert a table into SQL server somewhere?

    Yes, you can do this.  I don't have the benefit of access to my database from where I am at the moment, so please pardon me if I get some of this wrong.
    * There's a sample table in your primary portal database called something like &#034;samplepicklist&#034; - that will show you the data structure
    * You create a tree property
    * Bind that property to the table...
    In my case I'm using it to provide a region/country hierarchy list for user info.
    1) Property is named &#034;Country (by Region)&#034;
    2) Set values to...
            - Property is visible in the UI (checked)
            - Searchable (checked)
            - Type is &#034;Tree&#034; (when you select this the screen will change)
    3) got a view together - view is called &#034;vw_PTProfile_RegionCountries&#034;.  Set the Database Table Name setting to the name of your view or table.
    4) Provide your hierarchy info.  There are two bits - display/storage value name and ordering key.  In my case my values look like...
        PICK COLUMN                        SORT ORDER
        rgn_descr                              rgn_id
        country_descr                        country_id
    Blammo - done.  I now have a hierarchical region/country list.
    NOTES:
    * I'd suggest using a view so you can link to other data sources, etc. and not worry as much about shaping the data the way the portal needs it
    * The property works on most classes of objects EXCEPT documents.  This isn't an issue with the property as much as the document property editing approach (&#034;documents are special objects&#034;)
    That help?
    I love these kinds of things and want to make best use of them myself, so if anyone has any ideas on how to kick the portal into overdrive using properties (or sees that I'm mis-using this approach or steered Dave in the wrong direction) please, please do respond to this thread.
    Thanks,
    Eric

  • Transaction code to learn for sample codes about trees and containers

    trnasaction code to learn for sample codes about trees and containers

    hi check this....,
    REPORT  Ztree_TEST_PGM.
    Type-pools : fibs,stree.
    data : t_node type snodetext.
    data : node_tab like t_node occurs 0 with header line.
    clear : node_tab, node_tab[].
    node_tab-type = 'T'.
    node_tab-name = 'Earth'.
    node_tab-tlevel = '01'.
    node_tab-nlength = '5'.
    node_tab-color = '4'.
    node_tab-text = 'Hello'.
    node_tab-tlength ='5'.
    node_tab-tcolor = 3.
    append node_tab.
    clear node_tab.
    node_tab-type = 'P'.
    node_tab-name = 'Europe'.
    node_tab-tlevel = '02'.
    node_tab-nlength = '6'.
    node_tab-color = '1'.
    node_tab-text = 'Hello'.
    node_tab-tlength ='5'.
    node_tab-tcolor = 4.
    append node_tab.
    clear node_tab.
    node_tab-type = 'P'.
    node_tab-name = 'Germany'.
    node_tab-tlevel = '03'.
    node_tab-nlength = '7'.
    node_tab-color = '4'.
    node_tab-text = 'Hello'.
    node_tab-tlength ='5'.
    node_tab-tcolor = 4.
    append node_tab.
    clear node_tab.
    node_tab-type = 'P'.
    node_tab-name = 'Berlin'.
    node_tab-tlevel = '04'.
    node_tab-nlength = '6'.
    node_tab-color = '4'.
    node_tab-text = 'Hello'.
    node_tab-tlength ='5'.
    node_tab-tcolor = 3.
    append node_tab.
    clear node_tab.
    node_tab-type = 'P'.
    node_tab-name = 'Asia'.
    node_tab-tlevel = '02'.
    node_tab-nlength = '4'.
    node_tab-color = '1'.
    node_tab-text = 'Hello'.
    node_tab-tlength ='5'.
    node_tab-tcolor = 3.
    append node_tab.
    clear node_tab.
    node_tab-type = 'P'.
    node_tab-name = 'India'.
    node_tab-tlevel = '03-'.
    node_tab-nlength = '5'.
    node_tab-color = '1'.
    node_tab-text = 'Hello'.
    node_tab-tlength ='5'.
    node_tab-tcolor = 3.
    append node_tab.
    clear node_tab.
    node_tab-type = 'P'.
    node_tab-name = 'Bombay'.
    node_tab-tlevel = '04-'.
    node_tab-nlength = '6'.
    node_tab-color = '1'.
    node_tab-text = 'Hello'.
    node_tab-tlength ='5'.
    node_tab-tcolor = 3.
    append node_tab.
    clear node_tab.
    CALL FUNCTION 'RS_TREE_CONSTRUCT'
      TABLES
        NODETAB                  = node_tab .
      DATA: type_mapping TYPE stree_ctl_type_mapping_tab.
      DATA: wa_type TYPE stree_ctl_type_mapping.
      CLEAR: type_mapping[].
        wa_type-type = 'A'.
        wa_type-icon = '@BL@'.
        APPEND wa_type TO type_mapping.
    CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
    EXPORTING
       USE_CONTROL                     = 'L'.
    A list of other function modules that can also be used to construct tree reports:
    SEUT,                            Hierarchy framework
    RS_TREE_ADD_NODE                 Insert nodes
    RS_TREE_AUTOMATIC_REFRESH
    RS_TREE_COMPRESS                 Hide subtree(s)
    RS_TREE_CONSTRUCT                Construct new hierarchy or insert subtree
    RS_TREE_CONTROL_PREPARE
    RS_TREE_CREATE                   Create hierarchy
    RS_TREE_DELETE_NODE              Delete node with associated sub-tree
    RS_TREE_EXPAND                   Expand subtree
    RS_TREE_GET_CURRENT_LAYOUT       Get layout information for displayed hierarchy
    RS_TREE_GET_CURRENT_NODE         Get node at which cursor is positioned
    RS_TREE_GET_CURRENT_ROOT         Get current root node
    RS_TREE_GET_CURRENT_TREE         Get structure information for displayed hierarchy
    RS_TREE_GET_INPUT                Get entires from input fields
    RS_TREE_GET_MARKED_NODES         Get selected nodes
    RS_TREE_GET_MODIFICATION_LOG     Get change log for hierarchy
    RS_TREE_GET_NODE                 Get nodes for specified ID
    RS_TREE_GET_NODE_BY_NAME         Get node for specified node name
    RS_TREE_GET_PREDECESSOR          Get preceding node
    RS_TREE_GET_SEARCHSTRING         Get last search strinng
    RS_TREE_LIST                     Simulate hierarchy or subtree display
    RS_TREE_LIST_DISPLAY             Display hierarchy
    RS_TREE_LIST_DISPLAY             Display hierarchy
    RS_TREE_MODIFY_NODE
    RS_TREE_MOVE                     Reassign node with subtree
    RS_TREE_POP                      Get hierarchy from the stack and restore
    RS_TREE_PUSH                     Place hierarchy on the stack
    RS_TREE_RESET_LOCK               Deselect node
    RS_TREE_SET_CURRENT_LAYOUT       Set layout with marked cursor position
    RS_TREE_SET_CURRENT_TREE         Set other hierarchy
    RS_TREE_SET_LOCK                 Select node
    RS_TREE_SET_NODE                 Change Nodes
    RS_TREE_SET_SCROLL_POS           Position node at the beginning of the page
    RS_TREE_SLEEP
    RS_TREE_SORT_CHILDREN
    regards,
    venkat.

  • Help or tutorials about ABAP UI programming such as Tree and dock container

    Hi,
    I'm looking for help, tutorials or any ressources I can explore to undertsand how to work in ABAP with controls, containers, tree and so on.
    Each time I do a search on help.sap.com, I found help on a detailed object such as tree or docking container but I never found a global view. I would like to understand the big picture, have an averview of all involved concept. For example, if I want the user screen to be splitted in 2 parts, one that will display a tree, the other one that will display "simple" screen painter trees that will change depending on what user choose using the tree on the left. How do I need to proceed ?
    I'm sorry if I have not a more precise question because I don't found where to begin.
    Thanks for help
    Regards
    Morgan

    Hi Morgan,
    You can start going thorugh the concepts from help.sap.com. Have a look at the following link:
    http://help.sap.com/erp2005_ehp_04/helpdata/EN/1b/337930a63011d2bd6b080009b4534c/frameset.htm
    You will get the entire set of Example codes in the Transaction Code : ABAPDOCU.
    You can also look for examples for Dialog Programing in SE38 using the DEMODYNPRO*.
    Have a look at the Package : SLIS. This is a one point of all examples and demo of SAP Control Framework and ALV Functionality.
    Hope this helps.
    Thanks,
    Samantak.

  • How to resize and change the resolution of a batch of photos using Automator

    I searched for a long time tonight looking for the answer to this (seemingly) simple question:
    How do I use Automator to scale and change the resolution of a batch of images?
    It was not so simple.
    Links to this question:
    https://discussions.apple.com/message/12341246#12341246
    https://discussions.apple.com/message/12342026#12342026
    https://discussions.apple.com/message/5785047#5785047
    https://discussions.apple.com/message/1173358#1173358
    https://discussions.apple.com/message/5641853#5641853
    https://discussions.apple.com/message/3207516#3207516
    These are just the links on this site - I found them all over the place at MacRumors, Apple Tips, Mac Help, etc.
    You can actually manage this in Automator.
    Here are the steps that worked for me:
    Create an Automator APPLICATION - not a workflow (this is due to the way that I'm batch converting images - workflows might be ok for some cases)
    Step 1 is Copy Finder Items
    My flow inserts an SD card, opens the DCIM folder that my Nikon creates, selecting the images that I click (command + click to multi-select) and once I have the photos highlighted, I drag them onto this Automator App we're creating.
    <==  You'll have this guy soon!
    As a result - I want to copy the originals to my computer as step 1.  I don't touch the originals on the SD card (and cards are cheap so I tend to leave them on the cards as well)
    Step 2 is the Scale Images action - you can search the library for this and find it quickly.  For my part, I found that scaling images to about 38.8 percent of their size on the SD card is good for uploading to a blog.  Change this value to whatever you wish.
    Step 3 is Run Shell Script - and here is where we marry the brilliance found at this link with our script.If you have a hard time reading the text in the image, it is as follows:
    #bin/bash
    for f in "$@"
    do
         /usr/bin/sips -s dpiHeight 72.0 -s dpiWidth 72.0 $f
    done
    Save this application (I named mine "Format Photos")
    Place the application inside the target folder where you want the images to end up.  I do this because when I have the SD card window open, I can also open my "Photos" window and see my App sitting there.  I select my images as I mentioned and drag them on top of this app.  The app copies the originals and the conversions into the folder.
    NOTES: When you open a converted pic in Preview, you will see Resolution = 300 dpi if you go to Tools --> Adjust Size...  This reading is explained by another brilliant discussion as sips only touches the JFIF properties inside the file's MetaData.  However, if you look at the bottom of the Adjust Size... window, you'll see the image size is probably around 500 kb (give or take depending on the original).  My goal was to get the images down from the 3.0 MB I shoot at to around 500 kb.  Therefore even though the MetaData still thinks that it is 300 DPI according to Preview, it has been changed to 72 (open it in some other applications mentioned at the links and you'll find different readings - it all depends on what the application reads from the Meta).
    This does not rename the files, so you'll get DSC_1000.jpg and DSC_1000 copy.jpg in all likelihood.  If that annoys you, add a step into the Automator Application that renames the file after the "Run Shell Script" action has run, and you can have each file renamed according to some convention that you like.
    This took a heck of a lot longer than I expected - so I decided to put in the effort to share this with the community and save others the hassle. 

    PPI is pixels per inch of the image.  It is difficult to increase resolution as you are trying to add data that is not there.
    But for printing purposes what you want is dpi or dots per inch.
    The image processor either accessed from Bridge (tools/photoshp) or PS is a good way to change a batch of images.

  • We have an itunes account on our desktop and my kids have it on their ipod and iphone. I went in and changed our user name from my old e-mail address which is no longer accessible to my new one and now either of my kids can access the itunes store..

    We have an itunes account on our desktop and both my kids have it on iphone and ipod. I went in and changed out user name from an old e-mail address which is no longer accessible to my one I use now... When the kids try to sign onto the itunes store it tells them they have the wrong user name..
    Can this be fixed??

    Did you change the email address or create a new Apple ID?
    If the email address associated with the account was merely changed, sign out of the Apple ID on the devices and sign in using the new credentials.

  • If someone has wiped my ipad and changed passwords on icloud how do i get my data back

    if someone has wiped my ipad and changed passwords on icloud how do i get my data back? please could someone help me out thanks

    How did they wipe it?  By using Find My iPad and performing a wipe?  If so, that means they have your icloud ID and password, not a good thing.
    You could try connecting it to iTunes and performing a restore from iCloud.  But if they changed password, then you are out of the loop.  How did they get your password in order to change it?

  • I've just received an email from 'Apple' saying that my apple id was used      to sign into iCloud on an iphone 5s.  I have an iphone 4.  It's asking me to sign in to confirm my details and change my password.  How do I know if this email is genuine?

    I've just received an email from 'Apple' saying that my apple id was used to sign into iCloud on an iphone 5S.  I have an iphone 4.  It then asks that I 'click here' to confirm my details and change my password.  How do I tell if the email is genuine?

    Apple will not ask you to click a link in an email. They may tell you to log in to your account to reset your password. Go to https://appleid.apple.com and log in if you ever want to change any information in your profile (or your password). And do not click the link I just posted; instead enter it into a browser.
    You can verify the devices assigned to your account by going to https://icloud.com/find (again, don't click it), where you can see a list of devices registered to your Apple ID.
    As a general rule, you should never click a link in an email or forum post without verifying it first. You can see where it goes without clicking it in most email programs and browsers by hovering your mouse pointer over it. On an iPhone you can check where it goes by holding your finger on the link (rather than just tapping it).

  • I go to "clip adjustments" and change the length of a photo. It reverts back to original length. I also shorten it by moving the yellow "box" around a specific clip. It still reverts back to original length. Why?

    I go to "clip adjustments" and change the length of a clip. It reverts back to original length. I've also tried to shorten it by moving the yellow "box" around a specific clip to shorten. It still reverts back to original length. Why?

    Welcome to iMovie Discussions.
    See my 2nd reply to 'getzcreative', here.

Maybe you are looking for

  • My iPhone 4s is not detected by windows iTunes.

    After upgrading to Windows Ultimate, my iPhone 4s is not detected by Itunes (latest version) though my iPad 3 does and my old iPhone 3s are detected ok.

  • In Search of ultimate G5 1.8 powerPC MOD/UPGRADE??

    I was in search of maximizing my G5 without having to purchase a new G5. I just read a lil something on solid state SSD drives. Now here is what i am trying to acomplish. I am running PROTOOLS 8.0 with a 002 digidesign interface. Im trying to run my

  • Oracle Reports6 PDF Generation

    When I generate a PDF from the Reports preview screen the parameters passed to the report are cleaned and nothing appears. I noticed that when there aren't parameters to the report the PDF is generated successfully. I should call the report directly

  • Paragraphs with dynamic text

    Hi! I have a database (mysql) and a field called article where I upload my articles where I load it into my webpage dynamically. However, the paragraphs in my field do not appear in my webpage - my articles just appear as one large block of text. Her

  • Benefits Participation Print Confirmation Form

    There is a Print Confirmation Form link on the Benefits Participation page that brings up an adobe form with a benefits summary. Where that form is located, maintained, and how can it be changed? Edited by: David Keiser on Feb 25, 2009 12:33 AM