User selectable background that doesn't blink

Is it possible to have a flash animation, inserted in slide 1 (or on a master slide) that runs continuously in the background, without reloading or restarting as you go from slide to slide?
I'm building a course in which the user can choose between two backgrounds. The chosen background should appear continuosly as the project moves from slide to slide.
At the start of the course, the learner chooses a background... say, wood or stone.
I've tried:
1.) I built a Flash swf that does this: offers a choice, then fills the screen with the chosen background and stops.
     a. I put the swf on a master slide.
        problem: it reloads on each slide, and asks the user to choose again.
     b. I put the swf on the bottom layer of the first slide, and set the TIMING to Display for Rest of Project.
          problem: It displays on TOP of everything.
2.) I put one of the backgrounds on the master background, and used advanced actions to hide and show the other one, based on a variable. It required the second image to be present on every slide, and the advanced action to hide/show all of them each time. It works well if the second image is being hidden.
     problem: if the second image is being shown, it shows the background for a millisecond, and then shows the second image. It blinks on each slide. It's not continuous and annoying to the learner.
Can anyone think of a way to get a continuous, non-blinking background image (across slides) that is user-selectable?

Thank you Rod Ward for your prompt, correct, and encouraging reply.
It worked. The slides with the Rest Of Project background need to have their Master Slide property set to None.
Here's what I did:
slide 1 - would you like background A or B?
     A is a button that jumps to slide 2.
     B is a button that jumps to slide 3.
slide 2 - has image A with duration Rest of Project. (uncheck Place on top)
     On enter slide, I set a custom variable to "A"
     On Exit slide Jump to slide 4
slide 3 - has image B with duration Rest of Project. (uncheck Place on top)
     On enter slide, I set a custom variable to "B"
     On Exit slide Jump to slide 4
slide 4 - On enter slide, if custom variable = "A" hide B, show A; else hide A, show B.
     (You wouldn't think I'd need this, but the B background would reappear even though I "jumped" over it, and stay on top.)
subsequent slides -
     - On the Enter action of a given slide, I can us Advanced Actions to hide/show graphics (and attached sounds) based on the user's intial choice.

Similar Messages

  • How can I make a timer that turns on two relay channels where each channel can be on for different times of 0 to 10 seconds user selectable

    I am trying to make it clearer, I use a scxi-1161 and two of its relay channels to operate an MOV. I want to be able to apply power to two different pins on the MOV using two seperate relay channels.. but I want to be able to have it automatically cycle the two pins on and off by what time (in seconds) the user selects.. and the selection can be changed during cycling.

    Sorry I can't convert back to 5.1, but here are some pictures that might help. The mechanical action for the Start and Stop buttons is Latch When Released. In LabView 5.1, the While loop doesn't have a Stop if True option so you'll need to add an inverter between the terminal for the Stop button and the Continue terminal of the While loop.
    Attachments:
    TwoToggleTimers_frontpanel.jpg ‏31 KB
    TowToggleTimers_diagram_true.jpg ‏100 KB
    TowToggleTimers_diagram_false.jpg ‏99 KB

  • Is that possible to display the user selection data in the printable page?

    Hi All,
    I'm going to add a printablepage button on my page.
    Here comes a questions.
    Is that possible to display the user selection data in the printable page?
    For example,
    I have a table in the page,with 10 records.User select 5 of them.Can I display these 5 records in the printable page?
    Please help.

    Hi Yannick,
    Thanks a lot for the information. It worked.
    The portlet data can be accessible using bindings, but parameter name can be different.
    Meanwhile I have got one more scenario, where the Portlet and Task Flow placed in different pages of WCP Application. On change of data in the Portlet the application should navigate to another page where the Task Flow placed and displays selected data.
    Basically I can not use any button for navigation. The navigation should happen once I do some action in Portlet.
    Is this possible? If yes can you please let me know the steps?
    Thanks in advance!
    Somnath
    Edited by: Somnath Basak on Dec 20, 2011 9:41 AM

  • When I start Firefox, I only get the background of my browser in the Firefox window. I already reinstalled it, but that doesn't fix the problem.

    When I start Firefox, I only get the background of my browser in the Firefox window. I the normal window for 1 second, but then it changes in only the background window. So without toolbar, or navigation. I already reinstalled it, but that doesn't fix the problem.

    Try to disable hardware acceleration in Firefox.
    Tools > Options > Advanced > General > Browsing: "Use hardware acceleration when available"
    https://hacks.mozilla.org/2010/09/hardware-acceleration/
    https://support.mozilla.org/kb/how-do-i-upgrade-my-graphics-drivers

  • Within Music Library can anyone please explain why when I select the option to sort 'Album by Artist' a number of tracks are being treated as separate albums?  How can I correct this?  I have tried to 'drag and drop' but that doesn't work.

    Within music Library can anyone please explain why after I select the option to sort 'Album by Artist' a number of tracks are being treated as separate albums?  How can I fix this?  I have tried to manually correct by 'drag and drop' individual tracks but that doesn't work.  My music library includes a number of repeat album artwork images simply because not all tracks are being listed under the one album making my library more difficult to use than it should.  Any advise would be appreciated.

    See Grouping tracks into albums.
    tt2

  • If i have a form with check boxes. Can I add a button that will display the boxes that the user selected on a new page?

    For example, there are 10 check boxes and the user selects 5 of those boxes. Then they click a submit button. Just the information from those boxes would be displayed so they can print it. Is this possible? Any help pointing me in the right direction would be appreciated.

    That is definitely possible.
    Option 1: checkboxes are all named differently.
    In the click event for the submit button, add some code like this...
    if (cbChoice1 == "1") p2.tfChoice1.presence = "visible";
    else p2.tfChoice1.presence = "hidden"; //can use "invisible" if preferred
    if (cbChoice2 == "1")...
    Option 2: checkboxes are named the same
    In the click event for the submit button, add code like this...
    var checkboxes = xfa.resolveNodes("cbChoice[*]");
    var textfields = xfa.resolveNodes("p2.tfChoice[*]");
    for (i=0; i<checkboxes.length; i++){
        if( checkboxes.item(i).rawValue == "1") textfields.item(i).presence = "visible";
        else textfields.item(i).presence = "hidden";

  • MY IPOD APPEARS TO BE ZOOMED INTO THE SCREEN AT ALL TIMES, MAKING IT DIFFICULT TO DO SIMPLE TASKS SUCH AS GO BACK, OR SELECT A PLAYLIST, ETC. I'VE TRIED PULLING IT OUT WITH MY FINGERS BUT THAT DOESN'T WORK. PLEASE CAN YOU HELP!!! THANKS.

    I've got a touch iPod and for about a week now it's almost been permenently zoomed into the screen? I actually cannot get it to zoom back out. I've tried pulling the screen out with my fingers but that doesn't work. It's zoomed in on my home pages, on my music, settings everything! It makes simple things like deleting a number from my password login extreamly differcult. Please can someone help?!?! Thanks.

    Double tap the screen with three fingers to un-zoom.
    Then go to Settings > General > Accessibility > Zoom and turn this OFF.

  • Display report directly to PDF instead of when user selects that

    Hi, We have a requirement where we want to export report directly to PDF when user runs a report. We have a Java application where parameter screen for Crystal reports is displayed. When user clicks process button after selecting parameter then a new ReportViewer window appears. Right now after running report user selects export option to export to PDF. They want to open report directly to PDF instead of opening report / selecting export option.
    We have Crystal reports saved in BOXI R2 SP3 on IIS.  We are using .NET SDK to do this.
    Thanks,

    You can export and stream directly using RAS.
    [Sample|http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/b09a5013-9e3b-2c10-41af-85f08f91c895;jsessionid=(J2EE3417700)ID0302179550DB10992550101163851332End]

  • I can't seem to get my iMac (late 2009 model) into automatic sleep mode.  If I manually put it into sleep I don't have any issues.  I used to solve the issue by running "PleaseSleep" application but that doesn't work anymore since Lion.

    I can't seem to get my iMac (late 2009 model) into automatic sleep mode.  If I manually put it into sleep I don't have any issues.
    I used to solve the issue by running "PleaseSleep" application but that doesn't work anymore since Lion. I now want to fix the underlying problem.
    I'm not running any weird background processes and in my energy saver settings I've tagged "put the hard disk to sleep when possible:, "allow power button to put computer to sleep" and "automatically reduce brigthness". All pretty standard.
    Is there anyone who can give me some pointers ?

    Today I solved the same problem for my iMac running Snow Leopard. See https://discussions.apple.com/thread/3008791#15947706. The method may help you, too.
    For me it was the DynDNS Updater preventing my iMac from automatically entering sleep mode.
    To my knowledge the cause of this sleep problem can only be a peripheral device or a process. So I suggest to first unplug all peripherals and test whether that's the cause. If not, I suggest to terminate one process after another and to test automatic entering of sleep mode after each. Start with user processes; continue with system process if necessary.
    At least that's the way I found the offending process. Fortunately, I was able to change the configuration of that process to allow again automatic entering of sleep mode.
    Good luck!

  • Why can't I select background images in Pages 5?

    So I've got a document with an image of a Gantt Chart, and it's been formatted to be in the background.
    When I try to insert a new page before this image, it overlays the text of another page.
    Trying to find 'select background images' is no where to be found, whereas in Pages 09, it was fine.
    I'm all for simplicity, but removing something like this, and not being able to select this image at all?
    Is there anything I've missed?

    This is not the answer to the original question but it is an answer to a related problem.
    Apparently, Apple removed the simple and useful "Send Object to Background" menu item. For the last half an hour I was straggling to put my signature image under my name in a letter. The image background is white. So, when I insert the image, it is on top of the text and blocking it.
    Then, I searched and found this discussion, it helped but not solved the problem. I found a solution inspired by this discussion. Here, what I tried to send an image to the background.
    Chose the image in question. When I selected "Arrange -> Section Masters -> Move Object to Page" as suggested in this thread, it moves the image to the background. BUT, the image appears on every page at the same position within the section. If the document is a single-section document (almost all my documents are single-section documents, as I use Pages for short simple documents like letters (in the near future, I'll say "I used to use Pages", as this kind of feature removal makes it unfeasible to use it anymore).
    Thus, you have to define a new section which should contain only the page in question. Enough rumbling! Here is exactly what I did:
    Let N be the page number on which you wish to put an object in the background.
    Go to page N (your cursor must be somewhere on that page)
    On the toolbar choose "Setup -> Section Tab -> Create a new section -> Starting with this page"
    Go to page N+1
    On the toolbar choose "Setup -> Section Tab -> Create a new section -> Starting with this page"
    Now, you have a single-page-section on page N.
    Put you object on page N
    Select the object (image)
    On the menu, choose "Arrange -> Section Masters -> Move Object to Page"
    Also, I recommend to enable by "Arrange -> Section Masters -> make Master Objects Selectable"
    You can put any number of objects on page N by repeating on steps 5 to 8.
    The problem is, however, if you continue to edit your document and and sections gets longer, it will start a new page at the end of that section. Which is awful, because you'll have to remove the sections, and start from scratch, or manually move the text from one section to the other. So, do this after you are done with the document. Pity!
    If anyone have a better solution it will be appreciated.
    -- o --
    Now, I will continue to nag, if you allow me. When I open an old Pages document with images in the background, it opens just fine. It is not selectable as the original author stated. This indicate that Pages still support background objects independent of the sections, it just doesn't offer in interface to that facility. Why?
    I had a fairly large number of letters and templates I created with Pages. Before it is too late, I'll abandon it.
    I have a similar experience with iWeb. Apple promoted it, and then abandon it. Now all of my class pages (http://web.boun.edu.tr/akdogan) look too 2000s style, but I don't have energy to convert them something else at this point, but I'll have to.
    So I will continue to use LaTeX for long documents (that has been the choice for a long time), but I'll switch back to almost equally annoying Word for short and medium documents.
    Again, pity! I used to like Pages.

  • Message missing from alert box & Can you disable everything until user selects an answer?

    Question 1 - My alert box window is working, and the title and buttons function as they should, but does anyone know why my message is not showing up?
    Question 2 - How do you program the alert box window so that no other buttons on your application work until the user selects one of your alert window buttons? I can do this manually by setting everything to enabled = false, but I know this happens automatically every other time I've used the alert window component, but it's not working for me now.
    Question 3 - How can I prevent multiple alert windows from popping up? My alert comes up when a user clicks a button called 'Delete'. Would be solved if I had the answer to question 2.
    var myMess:String = '';
    var myTitle:String = '';
    function confirmDelete(){
        selectedAlt = list_dg.selectedItem.ALT_CODE;
        myMess = "Are you sure you want to delete this ALT code: "+selectedAlt+"?";
        myTitle = "Confirm Delete ALT Code Function                                                    ";
        var alertBox:Object = Alert.show(myMess,myTitle,Alert.YES|Alert.NO,this,deleteConfirmHandler);
        alertBox.setSize(450, 125);
    // HANDLER FOR CONFIRM DELETE ALT ALERT WINDOW
    deleteConfirmHandler = function(evt_obj:Object):Void {   
        var myAnswer = evt_obj.detail;
        // returns 1 if yes, 2 if no.
        if (myAnswer == 1){
                deleteAlt();
        else {   
            altDetail.moveAssign_btn.enabled       = false;
            altDetail.moveAvail_btn.enabled        = false;
            altDetail.avail_list.selectedIndex     = null;
            altDetail.assigned_list.selectedIndex  = null;

    I think you were on the right track, it did have something to do with the parent fla file. Once I complied it's parent file (and imported the window and alert classes into the parent), my message appeared in the alert box.
    It doesn't make any sense, because the component is not in the parent file, it's in the sub-parent fla file, but I guess you just have to compile all the files in the hierarchy for it to work... It also doesn't make sense why everything else worked before (the title, the yes and no buttons) except for the message.
    Thanks for the suggestion (to look at the depths, etc), however, I'm still unable to understand why the alert is not modal as it should be. If anyone has any suggestions on how to fix the buttons to make them modal, please let me know. Thanks.

  • JTree custom renderer setting selection background color problem

    Hi,
    I have a JTree with a custom icon renderer that displays an icon. The JTree is part of a TreeTable component. Iam having a problem setting the selection background uniformly for the entire row. There is no problem when there is no row selected in the JTable.
    My present code looks like this:
    Iam overriding paint in my renderer which extends DefaultCellRenderer.
           super.paint(g);
            Color bColor = null;
            if(!m_selected) {
                 if(currRow % 2 == 0) {
                      bColor = Color.WHITE;
                 } else {
                                                    bColor = backColor;
            } else {
                 bColor = table.getSelectionBackground();                  bColor = getRowSelectionColor();
         if(bColor != null) {
                           g.setColor(bColor);
             if(!m_selected) {
                   g.setXORMode(new Color(0xFF, 0xFF, 0xFF));
             } else {
                 g.setXORMode(new Color(0x00, 0x00, 0x00));
                  I have a color I arrive at using some algorithm that I want using method getRowSelectionColor(). The other cells in the row have this color. But the cell containing the tree node shows different color. Iam not able to arrive at the right combination of the color to set and the xor color so my tree node also looks like the other cells in the row.
    It is not a problem really as the table still looks good. Its just that the tree node looks like it has been highlighted and this might cause a problem when a table cell is highlighed later on in the application ( two cells in the row would be highlighted causing confusion).
    Any help would be appreciated.
    Regards,
    vidyut

    Hi Camickr,
    Thanks for the reply. Iam sorry I didn't include the sources the first time around. There were too many of them. I have created a small, self-contained, compilable program that demonstrates the problem and including it herewith. Still there's quite many files but they are all needed Iam afraid. The only one you will have to concern yourself fior this problem is the file IconRenderer.java. The treenode background and the other cells background are not in sync when table row is not selected in this example though. But they are in my real program. I just need them to be in sync i.e have the same background color when the row is selected.
    Your help would be very much appreciated.
    These are the files that are included below:
    1. AbstractTreeTableModel.java
    2. Bookmarks.java
    3. BookmarksModel.java
    4. DynamicTreeTableModel.java
    5. IconRenderer.java
    6. IndicatorRenderer.java
    7. JTreeTable.java
    8. TreeTableExample3.java (contains main)
    9. TreeTableModel.java
    10. TreeTableModelAdapter.java
    The copyright and javadocs information has been stripped for clarity.
    cheers,
    vidyut
    // AbstractTreeTableModel.java BEGIN
    import javax.swing.tree.*;
    import javax.swing.event.*;
    public abstract class AbstractTreeTableModel implements TreeTableModel {
        protected Object root;    
        protected EventListenerList listenerList = new EventListenerList();
        public AbstractTreeTableModel(Object root) {
            this.root = root;
        // Default implementations for methods in the TreeModel interface.
        public Object getRoot() {
            return root;
        public boolean isLeaf(Object node) {
            return getChildCount(node) == 0;
        public void valueForPathChanged(TreePath path, Object newValue) {}
        // This is not called in the JTree's default mode:
        // use a naive implementation.
        public int getIndexOfChild(Object parent, Object child) {
            for (int i = 0; i < getChildCount(parent); i++) {
             if (getChild(parent, i).equals(child)) {
                 return i;
         return -1;
        public void addTreeModelListener(TreeModelListener l) {
            listenerList.add(TreeModelListener.class, l);
        public void removeTreeModelListener(TreeModelListener l) {
            listenerList.remove(TreeModelListener.class, l);
        protected void fireTreeNodesChanged(Object source, Object[] path,
                                            int[] childIndices,
                                            Object[] children) {
            // Guaranteed to return a non-null array
            Object[] listeners = listenerList.getListenerList();
            TreeModelEvent e = null;
            // Process the listeners last to first, notifying
            // those that are interested in this event
            for (int i = listeners.length-2; i>=0; i-=2) {
                if (listeners==TreeModelListener.class) {
    // Lazily create the event:
    if (e == null)
    e = new TreeModelEvent(source, path,
    childIndices, children);
    ((TreeModelListener)listeners[i+1]).treeNodesChanged(e);
    protected void fireTreeNodesInserted(Object source, Object[] path,
    int[] childIndices,
    Object[] children) {
    // Guaranteed to return a non-null array
    Object[] listeners = listenerList.getListenerList();
    TreeModelEvent e = null;
    // Process the listeners last to first, notifying
    // those that are interested in this event
    for (int i = listeners.length-2; i>=0; i-=2) {
    if (listeners[i]==TreeModelListener.class) {
    // Lazily create the event:
    if (e == null)
    e = new TreeModelEvent(source, path,
    childIndices, children);
    ((TreeModelListener)listeners[i+1]).treeNodesInserted(e);
    protected void fireTreeNodesRemoved(Object source, Object[] path,
    int[] childIndices,
    Object[] children) {
    // Guaranteed to return a non-null array
    Object[] listeners = listenerList.getListenerList();
    TreeModelEvent e = null;
    // Process the listeners last to first, notifying
    // those that are interested in this event
    for (int i = listeners.length-2; i>=0; i-=2) {
    if (listeners[i]==TreeModelListener.class) {
    // Lazily create the event:
    if (e == null)
    e = new TreeModelEvent(source, path,
    childIndices, children);
    ((TreeModelListener)listeners[i+1]).treeNodesRemoved(e);
    protected void fireTreeStructureChanged(Object source, Object[] path,
    int[] childIndices,
    Object[] children) {
    // Guaranteed to return a non-null array
    Object[] listeners = listenerList.getListenerList();
    TreeModelEvent e = null;
    // Process the listeners last to first, notifying
    // those that are interested in this event
    for (int i = listeners.length-2; i>=0; i-=2) {
    if (listeners[i]==TreeModelListener.class) {
    // Lazily create the event:
    if (e == null)
    e = new TreeModelEvent(source, path,
    childIndices, children);
    ((TreeModelListener)listeners[i+1]).treeStructureChanged(e);
    // Default impelmentations for methods in the TreeTableModel interface.
    public Class getColumnClass(int column) { return Object.class; }
    public boolean isCellEditable(Object node, int column) {
    return getColumnClass(column) == TreeTableModel.class;
    public void setValueAt(Object aValue, Object node, int column) {}
    // Left to be implemented in the subclass:
    * public Object getChild(Object parent, int index)
    * public int getChildCount(Object parent)
    * public int getColumnCount()
    * public String getColumnName(Object node, int column)
    * public Object getValueAt(Object node, int column)
    // AbstractTreeTableModel.java END
    // Bookmarks.java BEGIN
    import java.io.*;
    import java.net.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.tree.*;
    import javax.swing.text.*;
    import javax.swing.text.html.*;
    import javax.swing.text.html.parser.*;
    public class Bookmarks {
    /** The root node the bookmarks are added to. */
    private BookmarkDirectory root;
    * Creates a new Bookmarks object, with the entries coming from
    * <code>path</code>.
    public Bookmarks(String path) {
         root = new BookmarkDirectory("Bookmarks");
         if (path != null) {
         parse(path);
    * Returns the root of the bookmarks.
    public BookmarkDirectory getRoot() {
         return root;
    protected void parse(String path) {
         try {
         BufferedReader reader = new BufferedReader(new FileReader
                                       (path));
         new ParserDelegator().parse(reader, new CallbackHandler(), true);
         catch (IOException ioe) {
         System.out.println("IOE: " + ioe);
         JOptionPane.showMessageDialog(null, "Load Bookmarks",
                             "Unable to load bookmarks",
                             JOptionPane.ERROR_MESSAGE);
    private static final short NO_ENTRY = 0;
    private static final short BOOKMARK_ENTRY = 2;
    private static final short DIRECTORY_ENTRY = 3;
    private class CallbackHandler extends HTMLEditorKit.ParserCallback {
         /** Parent node that new entries are added to. */
         private BookmarkDirectory parent;
         /** The most recently parsed tag. */
         private HTML.Tag tag;
         /** The last tag encountered. */
         private HTML.Tag lastTag;
         * The state, will be one of NO_ENTRY, DIRECTORY_ENTRY,
    * or BOOKMARK_ENTRY.
         private short state;
         * Date for the next BookmarkDirectory node.
         private Date parentDate;
         * The values from the attributes are placed in here. When the
         * text is encountered this is added to the node hierarchy and a
    * new instance is created.
         private BookmarkEntry lastBookmark;
         * Creates the CallbackHandler.
         public CallbackHandler() {
         parent = root;
         lastBookmark = new BookmarkEntry();
         // HTMLEditorKit.ParserCallback methods
         * Invoked when text in the html document is encountered. Based on
         * the current state, this will either: do nothing
    * (state == NO_ENTRY),
         * create a new BookmarkEntry (state == BOOKMARK_ENTRY) or
    * create a new
         * BookmarkDirectory (state == DIRECTORY_ENTRY). If state is
    * != NO_ENTRY, it is reset to NO_ENTRY after this is
    * invoked.
    public void handleText(char[] data, int pos) {
         switch (state) {
         case NO_ENTRY:
              break;
         case BOOKMARK_ENTRY:
              // URL.
              lastBookmark.setName(new String(data));
    parent.add(lastBookmark);
    lastBookmark = new BookmarkEntry();
              break;
         case DIRECTORY_ENTRY:
              // directory.
              BookmarkDirectory newParent = new
                   BookmarkDirectory(new String(data));
              newParent.setCreated(parentDate);
              parent.add(newParent);
              parent = newParent;
              break;
         default:
              break;
    state = NO_ENTRY;
         * Invoked when a start tag is encountered. Based on the tag
         * this may update the BookmarkEntry and state, or update the
         * parentDate.
         public void handleStartTag(HTML.Tag t, MutableAttributeSet a,
                        int pos) {
         lastTag = tag;
         tag = t;
         if (t == HTML.Tag.A && lastTag == HTML.Tag.DT) {
    long lDate;
              // URL
              URL url;
              try {
              url = new URL((String)a.getAttribute(HTML.Attribute.HREF));
              } catch (MalformedURLException murle) {
              url = null;
              lastBookmark.setLocation(url);
              // created
              Date date;
              try {
    lDate = Long.parseLong((String)a.getAttribute("add_date"));
    if (lDate != 0l) {
    date = new Date(1000l * lDate);
    else {
    date = null;
              } catch (Exception ex) {
              date = null;
              lastBookmark.setCreated(date);
              // last visited
              try {
    lDate = Long.parseLong((String)a.
    getAttribute("last_visit"));
    if (lDate != 0l) {
    date = new Date(1000l * lDate);
    else {
    date = null;
              } catch (Exception ex) {
              date = null;
              lastBookmark.setLastVisited(date);
              state = BOOKMARK_ENTRY;
         else if (t == HTML.Tag.H3 && lastTag == HTML.Tag.DT) {
              // new node.
              try {
              parentDate = new Date(1000l * Long.parseLong((String)a.
                                  getAttribute("add_date")));
              } catch (Exception ex) {
              parentDate = null;
              state = DIRECTORY_ENTRY;
         * Invoked when the end of a tag is encountered. If the tag is
         * a DL, this will set the node that parents are added to the current
         * nodes parent.
         public void handleEndTag(HTML.Tag t, int pos) {
         if (t == HTML.Tag.DL && parent != null) {
              parent = (BookmarkDirectory)parent.getParent();
    public static class BookmarkDirectory extends DefaultMutableTreeNode {
         /** Dates created. */
         private Date created;
         public BookmarkDirectory(String name) {
         super(name);
         public void setName(String name) {
         setUserObject(name);
         public String getName() {
         return (String)getUserObject();
         public void setCreated(Date date) {
         this.created = date;
         public Date getCreated() {
         return created;
    public static class BookmarkEntry extends DefaultMutableTreeNode {
         /** User description of the string. */
         private String name;
         /** The URL the bookmark represents. */
         private URL location;
         /** Dates the URL was last visited. */
         private Date lastVisited;
         /** Date the URL was created. */
         private Date created;
         public void setName(String name) {
         this.name = name;
         public String getName() {
         return name;
         public void setLocation(URL location) {
         this.location = location;
         public URL getLocation() {
         return location;
         public void setLastVisited(Date date) {
         lastVisited = date;
         public Date getLastVisited() {
         return lastVisited;
         public void setCreated(Date date) {
         this.created = date;
         public Date getCreated() {
         return created;
         public String toString() {
         return getName();
    // Bookmarks.java END
    // BookmarksModel.java BEGIN
    import java.util.Date;
    public class BookmarksModel extends DynamicTreeTableModel {
    * Names of the columns.
    private static final String[] columnNames =
    { "Name", "Location", "Last Visited", "Created" };
    * Method names used to access the data to display.
    private static final String[] methodNames =
    { "getName", "getLocation", "getLastVisited","getCreated" };
    * Method names used to set the data.
    private static final String[] setterMethodNames =
    { "setName", "setLocation", "setLastVisited","setCreated" };
    private static final Class[] classes =
    { TreeTableModel.class, String.class, Date.class, Date.class };
    public BookmarksModel(Bookmarks.BookmarkDirectory root) {
         super(root, columnNames, methodNames, setterMethodNames, classes);
    public boolean isCellEditable(Object node, int column) {
         switch (column) {
         case 0:
         // Allow editing of the name, as long as not the root.
         return (node != getRoot());
         case 1:
         // Allow editing of the location, as long as not a
         // directory
         return (node instanceof Bookmarks.BookmarkEntry);
         default:
         // Don't allow editing of the date fields.
         return false;
    // BookmarksModel.java END
    // DynamicTreeTableModel.java BEGIN
    import java.lang.reflect.*;
    import javax.swing.tree.*;
    public class DynamicTreeTableModel extends AbstractTreeTableModel {
    /** Names of the columns, used for the TableModel getColumnName method. */
    private String[] columnNames;
    private String[] methodNames;
    private String[] setterMethodNames;
    /** Column classes, used for the TableModel method getColumnClass. */
    private Class[] cTypes;
    public DynamicTreeTableModel(TreeNode root, String[] columnNames,
                        String[] getterMethodNames,
                        String[] setterMethodNames,
                        Class[] cTypes) {
         super(root);
         this.columnNames = columnNames;
         this.methodNames = getterMethodNames;
         this.setterMethodNames = setterMethodNames;
         this.cTypes = cTypes;
    public int getChildCount(Object node) {
         return ((TreeNode)node).getChildCount();
    public Object getChild(Object node, int i) {
         return ((TreeNode)node).getChildAt(i);
    public boolean isLeaf(Object node) {
         return ((TreeNode)node).isLeaf();
    public int getColumnCount() {
         return columnNames.length;
    public String getColumnName(int column) {
         if (cTypes == null || column < 0 || column >= cTypes.length) {
         return null;
         return columnNames[column];
    public Class getColumnClass(int column) {
         if (cTypes == null || column < 0 || column >= cTypes.length) {
         return null;
         return cTypes[column];
    public Object getValueAt(Object node, int column) {
         try {
         Method method = node.getClass().getMethod(methodNames[column],
                                  null);
         if (method != null) {
              return method.invoke(node, null);
         catch (Throwable th) {}
         return null;
    * Returns true if there is a setter method name for column
    * <code>column</code>. This is set in the constructor.
    public boolean isCellEditable(Object node, int column) {
    return (setterMethodNames != null &&
         setterMethodNames[column] != null);
    // Note: This looks up the methods each time! This is rather inefficient;
    // it should really be changed to cache matching
    // methods/constructors
    // based on <code>node</code>'s class, and code>aValue</code>'s
    //class.
    public void setValueAt(Object aValue, Object node, int column) {
         boolean found = false;
         try {
         // We have to search through all the methods since the
         // types may not match up.
         Method[] methods = node.getClass().getMethods();
         for (int counter = methods.length - 1; counter >= 0; counter--) {
              if (methods[counter].getName().equals
              (setterMethodNames[column]) && methods[counter].
              getParameterTypes() != null && methods[counter].
              getParameterTypes().length == 1) {
              // We found a matching method
              Class param = methods[counter].getParameterTypes()[0];
              if (!param.isInstance(aValue)) {
                   // Yes, we can use the value passed in directly,
                   // no coercision is necessary!
                   if (aValue instanceof String &&
                   ((String)aValue).length() == 0) {
                   // Assume an empty string is null, this is
                   // probably bogus for here.
                   aValue = null;
                   else {
                   // Have to attempt some sort of coercision.
                   // See if the expected parameter type has
                   // a constructor that takes a String.
                   Constructor cs = param.getConstructor
                   (new Class[] { String.class });
                   if (cs != null) {
                        aValue = cs.newInstance(new Object[]
                                       { aValue });
                   else {
                        aValue = null;
              // null either means it was an empty string, or there
              // was no translation. Could potentially deal with these
              // differently.
              methods[counter].invoke(node, new Object[] { aValue });
              found = true;
              break;
         } catch (Throwable th) {
         System.out.println("exception: " + th);
         if (found) {
         // The value changed, fire an event to notify listeners.
         TreeNode parent = ((TreeNode)node).getParent();
         fireTreeNodesChanged(this, getPathToRoot(parent),
                        new int[] { getIndexOfChild(parent, node) },
                        new Object[] { node });
    public TreeNode[] getPathToRoot(TreeNode aNode) {
    return getPathToRoot(aNode, 0);
    private TreeNode[] getPathToRoot(TreeNode aNode, int depth) {
    TreeNode[] retNodes;
         // This method recurses, traversing towards the root in order
         // size the array. On the way back, it fills in the nodes,
         // starting from the root and working back to the original node.
    /* Check for null, in case someone passed in a null node, or
    they passed in an element that isn't rooted at root. */
    if(aNode == null) {
    if(depth == 0)
    return null;
    else
    retNodes = new TreeNode[depth];
    else {
    depth++;
    if(aNode == root)
    retNodes = new TreeNode[depth];
    else
    retNodes = getPathToRoot(aNode.getParent(), depth);
    retNodes[retNodes.length - depth] = aNode;
    return retNodes;
    // DynamicTreeTableModel.java END
    // IconRenderer.java BEGIN
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.tree.*;
    import javax.swing.plaf.basic.BasicTreeUI;
    class IconRenderer extends DefaultTreeCellRenderer
    // Color backColor = new Color(0xD0, 0xCC, 0xFF);
    Color backColor = new Color(0xF0, 0xF0, 0xE0);
    String tipText = "";
    JTree tree;
    int currRow = 0;
    boolean m_selected;
    JTable table;
    public IconRenderer(JTree tree, JTable table) {
    this.table = table;
    // setBackground(backColor);
    setBackground(Color.GREEN);
    setForeground(Color.black);
         this.tree = tree;
    public Component getTreeCellRendererComponent(JTree tree, Object value,
    boolean selected,
    boolean expanded, boolean leaf,
    int row, boolean hasFocus) {
         Object node = null;
         super.getTreeCellRendererComponent(
    tree, value, selected,
    expanded, leaf, row,
    hasFocus);
         TreePath treePath = tree.getPathForRow(row);
    if(treePath != null)
              node = treePath.getLastPathComponent();
    currRow = row;
    m_selected = selected;
    DefaultMutableTreeNode itc = null;
    if (node instanceof DefaultMutableTreeNode) {
    itc = (DefaultMutableTreeNode)node;
         setClosedIcon(closedIcon);
    setOpenIcon(openIcon);
    return this;
    /* Override the default to send back different strings for folders and leaves. */
    public String getToolTipText() {
    return tipText;
    * Paints the value. The background is filled based on selected.
    public void paint(Graphics g) {
         super.paint(g);
         Color bColor = null;
         if(!m_selected) {
              System.out.println(" iconren not sel currRow " + currRow);
              if(currRow % 2 == 0) {
                   bColor = Color.WHITE;
              } else {
              bColor = backColor;
         } else {
              bColor = table.getSelectionBackground();
              System.out.println("in else selbg = " + bColor);           
              bColor = new Color(0xF0, 0xCC, 0x92);
              System.out.println(" bColor aft = " + bColor);           
         int imageOffset = -1;
         if(bColor != null) {
         imageOffset = getLabelStart();
         g.setColor(bColor);
         if(!m_selected) {
              System.out.println(" not sel setting white ");
              g.setXORMode(new Color(0xFF, 0xFF, 0xFF));
         } else {
    //          g.setXORMode(new Color(0xCC, 0xCC, 0x9F));
              g.setXORMode(new Color(0x00, 0x00, 0x00));
              System.out.println(" using color = " + g.getColor());           
         if(getComponentOrientation().isLeftToRight()) {
         g.fillRect(imageOffset, 0, getWidth() - 1 - imageOffset,
                   getHeight());
         } else {
         g.fillRect(0, 0, getWidth() - 1 - imageOffset,
                   getHeight());
    private int getLabelStart() {
         Icon currentI = getIcon();
         if(currentI != null && getText() != null) {
         return currentI.getIconWidth() + Math.max(0, getIconTextGap() - 1);
         return 0;
    // IconRenderer.java END
    // IndicatorRenderer.java BEGIN
    // import java.awt.*;
    import javax.swing.*;
    import javax.swing.border.*;
    import javax.swing.event.*;
    import javax.swing.tree.*;
    import javax.swing.table.*;
    import javax.swing.table.*;
    import javax.swing.plaf.basic.*;
    import java.awt.event.*;
    import java.util.EventObject;
    import java.text.NumberFormat;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.StringTokenizer;
    import java.util.Arrays;
    class IndicatorRenderer extends DefaultTableCellRenderer {
    /** Makes sure the number of displayed in an internationalized
    * manner. */
    protected NumberFormat formatter;
    /** Row that is currently being painted. */
    protected int lastRow;
    protected int reloadRow;
    protected int reloadCounter;
    protected TreeTableModel treeTableModel;
    protected TreeTableModelAdapter treeTblAdapter;
    protected JTable table;
    Component renderer = null;
    Color backColor = new Color(0xF0, 0xF0, 0xE0);
    IndicatorRenderer(TreeTableModelAdapter treeTblAdapter, TreeTableModel treeTableModel) {
         setHorizontalAlignment(JLabel.RIGHT);
         setFont(new Font("serif", Font.BOLD, 12));
         this.treeTableModel = treeTableModel;
         this.treeTblAdapter = treeTblAdapter;
    * Invoked as part of DefaultTableCellRenderers implemention. Sets
    * the text of the label.
    public void setValue(Object value) {
    /* setText((value == null) ? "---" : formatter.format(value)); */
         setText((value == null) ? "---" : (String) value.toString());
    * Returns this.
    public Component getTableCellRendererComponent(JTable table,
    Object value, boolean isSelected, boolean hasFocus,
    int row, int column) {
         renderer = super.getTableCellRendererComponent(table, value, isSelected,
    hasFocus, row, column);
         lastRow = row;
         this.table = table;
              if(isSelected) {
                   doMask(hasFocus, isSelected);
              } else
              setBackground(table.getBackground());
    return renderer;
    * If the row being painted is also being reloaded this will draw
    * a little indicator.
    public void paint(Graphics g) {
         super.paint(g);
    private void doMask(boolean hasFocus, boolean selected) {
              maskBackground(hasFocus, selected);
    private void maskBackground(boolean hasFocus, boolean selected) {
              Color seed = null;
              seed = table.getSelectionBackground();
              Color color = seed;
              if (color != null) {
                   setBackground(
    new Color(0xF0, 0xCC, 0x92));
    // IndicatorRenderer.java END
    // JTreeTable.java BEGIN
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.border.*;
    import javax.swing.event.*;
    import javax.swing.tree.*;
    import javax.swing.table.*;
    import java.awt.event.*;
    import java.util.EventObject;
    public class JTreeTable extends JTable {
    /** A subclass of JTree. */
    protected TreeTableCellRenderer tree;
    protected IndicatorRenderer indicatorRenderer = null;
    public JTreeTable(TreeTableModel treeTableModel) {
         super();
         // Creates the tree. It will be used as a renderer and editor.
         tree = new TreeTableCellRenderer(treeTableModel);
         TreeTableModelAdapter tdap = new TreeTableModelAdapter(treeTableModel, tree);
         // Installs a tableModel representing the visible rows in the tree.
         super.setModel(tdap);
         // Forces the JTable and JTree to share their row selection models.
         ListToTreeSelectionModelWrapper selectionWrapper = new
         ListToTreeSelectionModelWrapper();
         tree.setSelectionModel(selectionWrapper);
         setSelectionModel(selectionWrapper.getListSelectionModel());
         // Installs the tree editor renderer and editor.
         setDefaultRenderer(TreeTableModel.class, tree);
         setDefaultEditor(TreeTableModel.class, new TreeTableCellEditor());
         indicatorRenderer = new IndicatorRenderer(tdap, treeTableModel);     
         // No grid.
         setShowGrid(false);
         // No intercell spacing
         setIntercellSpacing(new Dimension(0, 0));     
         // And update the height of the trees row to match that of
         // the table.
         //if (tree.getRowHeight() < 1) {
         // Metal looks better like this.
         setRowHeight(20);
    public TableCellRenderer getCellRenderer(int row, int col) {
              if(col == 0)
              return tree;
              else
              return indicatorRenderer;     
    public void updateUI() {
         super.updateUI();
         if(tree != null) {
         tree.updateUI();
         // Do this so that the editor is referencing the current renderer
         // from the tree. The renderer can potentially change each time
         // laf changes.
         setDefaultEditor(TreeTableModel.class, new TreeTableCellEditor());
         // Use the tree's default foreground and background colors in the
         // table.
    LookAndFeel.installColorsAndFont(this, "Tree.background",
    "Tree.foreground", "Tree.font");
    public int getEditingRow() {
    return (getColumnClass(editingColumn) == TreeTableModel.class) ? -1 :
         editingRow;
    private int realEditingRow() {
         return editingRow;
    public void sizeColumnsToFit(int resizingColumn) {
         super.sizeColumnsToFit(resizingColumn);
         if (getEditingColumn() != -1 && getColumnClass(editingColumn) ==
         TreeTableModel.class) {
         Rectangle cellRect = getCellRect(realEditingRow(),
                             getEditingColumn(), false);
    Component component = getEditorComponent();
         component.setBounds(cellRect);
    component.validate();
    public void setRowHeight(int rowHeight) {
    super.setRowHeight(rowHeight);
         if (tree != null && tree.getRowHeight() != rowHeight) {
    tree.setRowHeight(getRowHeight());
    public JTree getTree() {
         return tree;
    public boolean editCellAt(int row, int column, EventObject e){
         boolean retValue = super.editCellAt(row, column, e);
         if (retValue && getColumnClass(column) == TreeTableModel.class) {
         repaint(getCellRect(row, column, false));
         return retValue;
    public class TreeTableCellRenderer extends JTree implements
         TableCellRenderer {
         /** Last table/tree row asked to renderer. */
         protected int visibleRow;
         /** Border to draw around the tree, if this is non-null, it will
         * be painted. */
         protected Border highlightBorder;
         public TreeTableCellRenderer(Tr

  • How to I get rid of an "Open With..." option that doesn't exist?

    I've tried to find out how to remove an element of the "Open With..." options but don't seem to be getting much traction. I have an old application listed in the "Open With..." pull down menu that doesn't exist anymore, but when I select the file, using command-i, to change which application opens the file, it works for that file. I want to change association using the "Change All" button, but when I do that, the "dead" application becomes the default application again and I'm back to square one. Is this fixable? How do I get rid of the useless option? Will I have do do this for each file?

    your link gave me a good starting place...
    /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchSe rvices.framework/Versions/A/Support/lsregister -kill -R -all -domain local -domain system -domain user
    this seemed to do the trick... I would have never have solved this without your suggestion.
    thanks.

  • Can I somehow let the user select multiple images from device?

    Is there any way to let the user select multiple images from the device media gallery?
    The CameraRoll only selects one image. And the FileRefernceList doesn't show thumbnails (so you have no idea what you are selecting).
    Is there a way, or maybe some sort of workaround, for this? Is there a way to maybe "read" the users gallery on the SD-card and output your own gallery that the user can select from?
    I'm developing towards both Android and iOS so cross-plattform is a must.
    Thank you guys

    +1 to this question. I'm looking to do the same thing but haven't had any luck yet.

  • [CS5-5.5][JS] Replace xml element content with user selection

    Hi,
    I'm trying to write a script that replaces xml element content with a user selection.
    I have document containing a textframe with a "root" tag attached. In this frame I have 2 paragraphs, each tagged with a different tag.
    I would like to replace the content of one of the paragraphs with the content of a text selection.
    This piece of code doesn't seem to work:
    myXMLElement.xmlContent = app.selection[0];
    The problem is that almost all properties of the xmlelement (paragraphs, words, etc) are read-only.
    Does anyone have any suggestion?
    Thanx

    It depends on whether you want to maintain formatting. You can use
    myXMLElement.contents = app.selection[0].contents;
    in the (unlikely?) event that you don't mind blowing away the formatting. Otherwise you'll want to use something like:
    myXMLElement.xmlContent.remove();
    app.selection[0].duplicate(LocationOptions.AT_BEGINNING, myXMLElement.xmlContent);
    Jeff

Maybe you are looking for

  • Can't See Historical Forecast in SPP

    Hi We have loaded the sales order data using a flat file.We were able to load the data into the cube 9ADEMAND (but not into the ODS 9ARAWDAT). We are also able to see the demand data in the forecasting planning book and even forecast is also getting

  • Mercury Playback Engine not available on Macbook Pro Retina 15"

    Hi, I have a Macbook Pro Retina 15" with 16gb of RAM and a 500GB SSD, and am trying to enable Mercury Playback Engine GPU Acceleration (Open CL) on a legitimate copy of Adobe Premiere Pro CS6.  For some reason the selection for that option is shaded

  • My Mac Mini is not connecting to internet through the ethernet

    Had an issue with my internet provider, which was resolved after a month.....at this point my internet is not connecting through the ethernet cable (no router is being used, from modem directly to mini mac).....ERROR:YOU ARE NOT CONNECTED TO THE INTE

  • Which DVI connector for MacBook Pro model 3,1?

    I assume the DVI out on the 2007 MacBook Pro (model identifier 3,1) is a nonstandard DVI and requires a DVI-to-DVI adapter? It looks like a fullsize connector that I could attach with a standard DVI, but I thought I needed a 30.00 adapter, is this tr

  • HT2534 Do you need a credit card to download from the iTunes Store or App Store?

    you need a cretid car ? because i have my id apple but there say its not use in store i press ok and go to options and theres no none to options for pay what i have to do because i dont have any credit car or when i want to change the country there i