Null focus cycle root  (getFocusCycleRootAncestor)

I've got a strange problem I can't figure out. I have a JComboBox in a JTable cell (the JComboBox is the component of CellEditor). When I focus the combobox, then hit TAB, focus is transfered outside of the JTable instread of back to it (I think it should go to the next cell).
To see what was happening, I stuck a focus listener on the the editor of the combobox (BasicComboBoxEditor) which is the class that actually does the editing. In the focusGained and focusLost method, I'm printing out the focus cycle root for both the source and the opposite component (getFocusCycleRootAncestor).
In focus gained I see this:
src comp = javax.swing.plaf.basic.BasicComboBoxEditor$BorderlessTextField
and the focus cycle root for it is my JInternalFrame.
(This is what I would expect.)
In focus lost, I then get:
src comp = javax.swing.plaf.basic.BasicComboBoxEditor$BorderlessTextField
but the focus cycle root is now NULL.
So, what the heck happened to my focus cycle root? It was there when the focus was gained, why is it not there when focus is lost? It doesn't make any sense to me.
Anybody have an idea?
Thanks.

I've discoved something intersting here. The focus problem only occurs if I have the JComboBox set as editable. For non-editable ones, it behaves appropriately. My preliminary guess is that the BasicComboBoxEditor's editing component looks to be a BorderlessTextField is doing something weird. I'll investigate it further...

Similar Messages

  • Why? -- IllegalArgumentException: focusCycleRoot is not a focus cyle root

    Hi,
    I am getting this exception:
    java.lang.IllegalArgumentException: focusCycleRoot is not a focus cyle root of aComponent
    when I call, setEnabled(false) on a JButton that I have. Why is this, and how can I fix it?
    thanks

    camickr, I understand that I didn't post code, etc. I am merely wanting to know if someone else has had this problem, or similar problem, and if so what did they do to fix it? and did they know why it was occuring?
    If I thought my code was relevant I would post it...but this is a fairly simple class, and a very basic operation. I appreciate all your previous help, and comments...but I am not a complete moron you know...I realize that a lot of problems that are posted in these forums require code to help solve....perhaps I stated my question the wrong way....
    I just want to know, has anyone else come across this exception when using a Jbutton's setEnabled(false) ???
    Thanks again.

  • Passing FocusTraversalPolicy up a cycle root and back

    I'm developing gui components for work. One of the components is a text search panel. I want to define the focus traversal for the text search panel component. I have a second component called a list chooser which basically contains a text search panel on the left and the right. Lastly I have my test application with various buttons and a list chooser component. By default, the tab focus visits each of the components in the gui. However I want to have a special focus traversal policy for the text search panel. When I set a traversal policy for the text search panel, the tab traversal does not go outside of the text search panel unless by explict focus change using a mouse. Like wise focus traversal around the test buttons does not not visit focusable components in the text search panel. How do I hand off the tab traversal to a component outside of the one I'm setting a policy to. Also how do I make sure that the component with a custom traversal policy is also later visited?

    Never mind figured it out.
    private class SearchFocusTraversalPolicy extends DefaultFocusTraversalPolicy
    public Component getComponentAfter(Container container, Component component)
    Container parent = getFocusCycleRootAncestor();
    FocusTraversalPolicy ftp = parent.getFocusTraversalPolicy();
    return ftp.getComponentAfter(parent, TextSearchPanel.this);
    public Component getComponentBefore(Container container, Component component)
    Container parent = getFocusCycleRootAncestor();
    FocusTraversalPolicy ftp = parent.getFocusTraversalPolicy();
    return ftp.getComponentBefore(parent, TextSearchPanel.this);

  • Focus transfer to unknown window.

    Hi, all.
    I have a problem - m.b. somebody knows how to solve it. I write a library, which used by external code. When some method of my class is called, a JDialog with parent==null is opened and user prompted to fill some data. When my JDialog is closed, the focus must to return to the original window - but I don't have a reference to it.. Is it possible to find what are additional Window objects existing in the jvm, and pass the focus to on of them?
    I would very appreciate any help and advice.
    Sincerely.
    Jab.
    [email protected]

    Hi,
    there is a method in jdk1.4 that returns the last focused component,
    I think it's "getOppositeComponent". But that doesn't work for
    top-level-containers as they are focus-cycle-roots and therefore
    never have focus. You could try to use that method and then climb
    up the component hirarchy with the method "getParent()" until you
    have the Top-Level-Container and then invoke "toFront()" or "show()" on it.
    But I think the proper way for what you want to do is to use an
    interface to the outside(I've never seen librarys without interfaces).
    For example you could use a method "register(JDialog dialog)", that
    every client, that wants to use your library, has to implement.
    You can save the registered clients(probably JFrames)in a collection,
    register WindowListeners for them and use a member that points to
    the client that was last activated.
    Hope this helps,
    alex

  • JDialog FocusTravesalPolicy.getFirstComponent() NULL?

    Hi,
    I am obviously missing something critical in Swing's 1.4 focus API.
    The code below produces the following output and I don't know how to get to any more primitive attempt to uderstand. (Belwo the output is first and code second.)
    SCREEN OUTPUTIs JDialg a focus cycle root? true
      Its FocusTraversalPolicy is class javax.swing.LayoutFocusTraversalPolicy
      Its default Component is null
      Its first Component is null
      Its last Component is nullSOURCE CODEimport java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.text.*;
    class TestFocus1 extends JDialog {
      * Members
      private String[]     btnNames   = {"Submit", "Back", "Next", "Cancel"};
      private String[]     textLabels = {"One", "Two", "Three", "Four", "Five", "Six"};
      private JButton[]    buttons    = new JButton[btnNames.length];
      private TF[] textFields = new TF[textLabels.length];
      private JPanel       btnPanel   = new JPanel (); // FlowLayout by default
      private JPanel       textPanel  = new JPanel (new GridLayout (textLabels.length, 2, 5, 5));
      private class TF extends JTextField {
        private int row;
        TF (int width, int row) {
          super (width);
          this.row = row;
        public int getRow () {
          return row;
      * Main
      public static void main (String[] args) {
        TestFocus1 tf = new TestFocus1 ();
        tf.pack ();
        tf.setVisible (true);
      / Constructor
      public TestFocus1 () {
        for (int i = 0; i < btnNames.length; i++) {
          // Create JButtons
          JButton btn = new JButton (btnNames);
    if (btnNames[i].equals ("Cancel")) {
    btn.addActionListener (
    new ActionListener () {
    public void actionPerformed (ActionEvent ae) {
    dispose ();
    btnPanel.add (btn);
    // Create JLabels and TFs
    for (int j = 0; j < textLabels.length; j++) {
    textPanel.add (new JLabel (textLabels[j]));
    TF field = new TF (25, j);
    textFields[j] = field;
    textPanel.add (field);
    // Add textPanel and btnPanel
    this.getContentPane ().setLayout (new BorderLayout ());
    textPanel.setFocusCycleRoot (true); // Make textPanel a cycle root
    this.getContentPane ().add (textPanel, BorderLayout.CENTER);
    this.getContentPane ().add (btnPanel, BorderLayout.SOUTH);
    System.out.println ("Is JDialg a focus cycle root? " + this.isFocusCycleRoot ());
    FocusTraversalPolicy policy = this.getFocusTraversalPolicy ();
    System.out.println (" Its FocusTraversalPolicy is " + policy.getClass ());
    System.out.println (" Its default Component is " + policy.getDefaultComponent (this));
    System.out.println (" Its first Component is " + policy.getFirstComponent (this));
    System.out.println (" Its last Component is " + policy.getLastComponent (this));

    move setVisible(true) to here and see what happens
    this.getContentPane ().add (btnPanel, BorderLayout.SOUTH);
    setVisible(true);//<-------------------------------------------
    System.out.println ("Is JDialg a focus cycle root? " + this.isFocusCycleRoot ());
    etc

  • Focus management for JTable (J2SE 1.4)

    hi,
    I am using J2SE 1.4 currently. Java 1.4 defines JTables as FocusCycleRoots. That is, when they are tabbed into, focus becomes "trapped" within them, so the Tab key in a JTable causes the focus to traverse to the next cell. But I want give the focus to the next component (e.g JButton, JTextField, etc.), not one of its cells.
    Anybody knows how solve this problem? Thanks a lot.

    isManagingFocus is deprecated in 1.4 so it's probably best not to use that.
    Also, JTable isn't actually a focus cycle root. It's simply operating on the key bindings that it has by default. That is, TAB moves the selection from cell to cell and Ctrl-TAB moves to the next focusable component (after the JTable).
    I think the recommended way to approach it is to set the focus traversal keys something like this
    // get your table from somewhere
    JTable table = new JTable();
    // use java.awt.AWTKeyStroke to set up the appropriate focus
    // traversal keys
    AWTKeyStroke tab = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_TAB, 0);
    AWTKeyStroke shiftTab = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_TAB, KeyEvent.SHIFT_DOWN_MASK);
    AWTKeyStroke ctrlTab = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_TAB, KeyEvent.CTRL_DOWN_MASK);
    AWTKeyStroke ctrlShiftTab = AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_TAB, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK);
    // create a java.util.Set for forwards and backwards focus traversal
    // keys. The actual concrete Set you use probably doesn't matter.
    // I've used a java.util.HashSet
    HashSet forwardKeys = new HashSet();
    HashSet backwardKeys = new HashSet();
    // add the appropriate keys to the appropriate sets
    forwardKeys.add(tab);
    forwardKeys.add(ctrlTab);
    backwardKeys.add(shiftTab);
    backwardKeys.add(ctrlShiftTab);
    // set the focus traversal keys on the table.
    table.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, forwardKeys);
    table.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, backwardKeys);

  • HowTo? Bulk Focus transfer

    Situation:
    Panel A contains a lot of JTextFields (field 1a...na)
    Panel B contains a lot of JTextFields (field 1b...nb)
    Whenever the focus has been transfered from any JTextfield in Panel A to any JTextField in Panel B, i would like to react.
    Or in other Words:
    Whenever a Component in Panel A loose its focus to a Component not in Panel A, i would like to know.
    Do i realy have to add a focusListener to every Textfield?

    Hi,
    there is a method in jdk1.4 that returns the last focused component,
    I think it's "getOppositeComponent". But that doesn't work for
    top-level-containers as they are focus-cycle-roots and therefore
    never have focus. You could try to use that method and then climb
    up the component hirarchy with the method "getParent()" until you
    have the Top-Level-Container and then invoke "toFront()" or "show()" on it.
    But I think the proper way for what you want to do is to use an
    interface to the outside(I've never seen librarys without interfaces).
    For example you could use a method "register(JDialog dialog)", that
    every client, that wants to use your library, has to implement.
    You can save the registered clients(probably JFrames)in a collection,
    register WindowListeners for them and use a member that points to
    the client that was last activated.
    Hope this helps,
    alex

  • New FocusTraversalPolicy Mechanism Does Not Work Well With OO Designs

    I would like to complain about the new focus traversal mechanism not working well with object-oriented GUI designs.
    Specifically, we have many reusable panel classes that can be swapped in and out of reusable dialog classes. On some of these panels, the default focus traversal is not what is desirable, perhaps because one component on the right side of the window is just slightly higher than a component on the left side, maybe due to the component on the right having a label on top, and so the default focus goes to the component on the right instead of the left. So we have a need to be able to explicitly define the order of components in some panels.
    If I try to define a focus traversal policy in the panel's constructor, a NullPointerException is thrown because the panel's focus cycle root is null (the panel has not been added to any dialog or frame yet).
    If I try to associate a focus traversal policy at the dialog level, it would have to explicitly reference its child panels' inner components, which would break the encapsulation of the panels. It would also make it hard to have generic dialog classes into which various reusable panel objects can be swapped.
    Someone suggested making each panel a focus cycle root. This makes it hard to "break out" of one panel to move on to the next panel in the dialog. Special keys would have to be assigned to try to cycle out, and these keys would have to be different than the normal traversal keys, making them inconsistent and nonintuitive to the user. Also, the focus policy would have to know if the dialog had more than one panel, what order the panels were in to know whether to cycle to the next panel or not, etc. This is a mess.
    Does anyone have any idea how to get around these problems? I have tried using a global focus policy with a global hash map of prev/next component key-value pairs, but we are still running into trouble with some deeply nested tabbed dialogs. It's just not possible to always have the focus cycle root in existence at the point where you want to explicitly define traversal between two components, or when you are trying to establish the default component for a panel in a tabbed pane.
    Has anyone else run into similar issues?
    Robbie Gilbert
    [email protected]

    I agree completely. One of the popular consultants on this forum stated that the new focus mechanism was more versatile and only a little more complex. I would say it's more than a little complex given the trouble average programmers are having understanding how it works...at least at first...and after understanding it realizing that they are going to have type their fingers off to update their code. Oh, and the dread of maintaining this awful mess.
    I'm currently having the same problem as you Robbie. Some of my reusable panels need special tab ordering...that's not usually a problem, in most programming environments, till now. Now I have to go around the world and back just to get my stupid cursor to be in the right place when I hit the tab key??!!! and special key mappings just to get out of a focus cycle...lame.
    And how is an IDE graphical designer going to work with this? It's not, that's how...ok maybe if some kind person or company creates a custom focus traversal policy editor of some kind, I don't know.
    Good grief Sun! We need something to help us meet our deadlines, not solutions that force us to spend 80% of our time customizing every stinking bit of UI functionality we need!!!
    JTables are even worse. I've mastered most of the garbage that is JTable after many months of pain and I don't know how I'm going to help my peers understand them in any short amount of time. Most of them were Oracle Forms programmers, not that that is any great solution either. But they will likely have problems.
    In conclusion, I wish I had chosen another UI technology for our new product client, and may yet.

  • Working around Component.setEnabled().

    I'm having a lot of issues arising from events generated from setEnabled() due to the fact that they get added to the end of the queue. For some reason even running code using SwingUtilities.invokeLater() after the setEnabled() doesn't work, the offending code still ends up executed after what was in invokeLater(). I believe it's part of the UI's reaction to the property change but I haven't pin pointed it yet.
    For example:
    myJTextField.setEnabled(false);
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            myFocusCycleRoot.transferFocusDownCycle();
    });Results in focus being transferred to myFocusCycleRoot's default component, then transferred to the component after myJTextField. This leads me to believe that code is run at the end of the queue and then THAT code runs code that gets added to the end of the queue which causes the focus to transfer. The code in invokeLater() would then end up executed between the two. Any ideas for a solution?

    if I'm reading the snippet in Manning's book correct,
    transferFocusDownCycle()
    takes you to the next focus cycle,Either you are reading wrong or Manning is wrong.
    Transfers the focus down one focus traversal cycle. If this Container is a focus cycle root, then the focus owner is set to this Container's default Component to focus, and the current focus cycle root is set to this Container. If this Container is not a focus cycle root, then no focus traversal operation occurs.
    We're calling it on a focus cycle root and consequently the default component will have focus. According to the focus traversal policy installed the default component will be the first component found that is enabled, or null if none are enabled.
    not the next component (again, if I'm reading
    correctly, is what you're trying to do)Nope. Not what I want at all. That's the problem, setEnabled(false) indirectly results in focus transferring to the next component after focus has already been changed to the default component.
    Let's say we have 10 components and we'll call them component 1 through component 10. Component 1 is the first component in the policy, component 10 is the last. The default component is the first enabled component found when iterating from 1 to 10. Now, a user may be viewing these components and may take some action. This action will result in those 10 components having their fields repopulated and some of them disabled based upon information from a model. Likewise, some of the components that may have been disabled prior to the user action may become enabled. Once this happens we want the focus to move to the default component, which may be before, or after, or even the same as the current component depending on what all was enabled/disabled. Unfortunately, if the current component happens to be disabled in this process then that disabling will cause focus to transfer to the next component after we've changed focus to the default component. So let's say we have thus:
    Components 1-5 disabled component 6-10 enabled. The user is on component 6. The user takes said action. Now components 3, 4, 7, 9, 10 become enabled. Likewise components 1, 2, 5, 6, 8 become disabled. The default component will be the first enabled, 3, and using transferFocusDownCycle() the default component receives focus. So now the focus is on 3. However, 6 had focus before and was disabled, and somehow it's code only now results in transfering focus to 7, so it jumps to 7.
    Now consider what happens if 7 became disabled. It happens before it has focus, so the focus transfer from 7 isn't triggered, but 7 still receives focus despite being disabled because the trigger in 6 happened before it was disabled. Now 7, a disabled component, receives focus but is disabled so focus ends up in limbo and nothing has it anymore.
    Yes, it's a freaking nightmare and I'm about ready to file a bug because the more I think about it the dumber it sounds. Why should setEnabled() transfer focus? That should be left to the client to decide whether or not focus should even happen. Worst part of it is because of the way it's written if the next component becomes disabled between it's checking for focus owner and actually transferring focus then focus ends up in limbo and the next component gets a focus gained but never a focus lost. Plus, I don't see it documented in the API at all.
    Oh, and I will try to put together a compilable example though it most certainly won't be short.

  • FocusListener JInternalFrame

    Hi All,
    I have used added a FocusListener to a JInternalFrame, but when I click elsewhere on my desktoppane no FocusEvent seems to occur as the FocusLost and FocusGained don't seem to pick up this change in foucs. Any idea guys, and possible work rounds?
    Adam

    Hmm....I think the problem is that JInternalFrame is a focus cycle root and is not itself focus traversable. Thus, it will always be a child of JInternalFrame that receives the focus.
    Mitch

  • JTable & focusCycleRoot & LegacyGlueFocusTraversalPolicy

    My 1.4.2 JTable is by default not a focus cycle root. It is within a JPanel for which we set focus traversal policy to a subclass of LayoutFocusTraversalPolicy.
    In this JTable, we use a subclass of JFormattedTextField as a cell editor. When JTable sets up this cell editor, JTable sees that JTable isn't a focus cycle root, and sets my JPanel's policy to a LegacyGlueFocusTraversalPolicy! Worse, when it discards the editor, it doesn't restore my JPanel's policy. So I lose all the methods that my subclass added to LayoutFocusTraversalPolicy.
    1 If I simply set table.setFocusCycleRoot(true), this problem doesn't occur. Is this a safe thing to do? Will it have side-effects?
    2 I would expect JTable to restore the damage that it did when editing stops, but it doesn't. Did I do something wrong in my editing methods?
    3 Any better solutions?
    Thanks,
    Matt

    Hi Matt,
    I respond on this one (although late) because I happened to be busy with the same thing only now (maybe it can help somebody searching on LegacyGlueFocusTraversalPolicy in the future?):
    - Every FocusTraversalPolicy is substituted by the LegacyGlueFocusTraversalPolicy whenever you call method like JComponent.setNextFocusableComponent. The LegacyGlueFocusTraversalPolicy will glue two components to each other in a previous next relationship. The relation is stored in a map, which is kept inside the LegacyGlueFocusTraversalPolicy, next to your original FocusTraversalPolicy. If not found in the map it is going to choose the next from your own policy anyhow.
    - JTable is calling JComponent.setNextFocusableComponent when preparing the editor. Better could maybe be that the TraversalPolicy is just checking whether the component, for which we are looking for the next, is inside a JTable, if so the JTable is the next, unless the component has an explicit overridden nextFocusableComponent.
    - The fact that it works for you when setting the JTable to be focusCycleRoot is merely a side effect I believe. The system asks the real focusCycleRoot for the original FocusTraversalPolicy (the one that you have implemented) and when the table is a focusCycleRoot the system will put the new policy as the policy for the table and not for the actual focusCycleRoot (the frame under the table and other components). This might have other side effects. Like the way you navigate out of the table to other level of focusCycleRoot (although I don't know what the exact effect will be).
    Normally the only side effect of default procedure (where it installs the LegacyGlueFocusTraversalPolicy) is that it will choose the table as next component when removing the editor component from the table. Your own implementation of FocusTraversalPolicy will continue to be used (but as a delegate inside the LegacyGlueFocusTraversalPolicy). So even after table has replaced it.
    Hope it helps,
    Marcel

  • Application focus loss to null

    I have a repeatable problem where my application loses keyboard focus as the result of a KeyEvent.
    Here's the FocusLost event:
    java.awt.event.WindowEvent[WINDOW_LOST_FOCUS,opposite=null,oldState=0,newState=0] on frame0Ass you can see the main (and only window) claims to lose focus to something outside of the JVM. I don't understand how that can happen on a KeyEvent targeted to a component within that JVM.
    This only happens sometimes when I hit F7. F7 is a key I look for, and handle similarly to many others in my own KeyEventDispatcher.dispatchKeyEvent method.
    Why is my app losing focus? (This happens on Linux under 1.4.2_03 and Windows XP under 1.4.2).,

    It's function keys that make your window lose the focus, right? If my understanding of that kind of thing is correct, these keys have specific actions to perform when hit. E.g. tab will set the focus on the next component in the focus cycle. You can stop your key from doing so by overwriting the processKeyEvent method of your component. This snippet is taken from a JTabel that isonly in the need for Enter and Tab to work. Maybe that might help you a little:
    public boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed){
            if(e.getKeyCode() == KeyEvent.VK_ENTER || e.getKeyCode() == KeyEvent.VK_TAB ){
                return super.processKeyBinding(ks,e,condition,pressed);
            } else {
                return false;
            }

  • Jquery cycle stacked

    The images are stacked and not cycling. Do I have to be hosted to see the cycle? below is source, css, two java files.  Help
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="js/jquery.cycle.min.js"></script>
    <script type="text/javascript" src="js/jquery.cycle.lite.js"></script>
    <title>Lights! Camera! Ocean!</title>
    <style type="text/css"></style>
    <link href="style sheets/stylesheet.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
    <!--
    -->
    </style>
    <!-- include jquery library and Cycle plugin -->
    <!--  initialize the slideshow when the DOM is ready -->
    <!-- end jquery slideshow -->
    <script type="text/javascript">
    $(document).ready(function(){
    $('#trip1rightcol').cycle({
      fx: 'fade',
      speed: 2500
    </script>
    <script type="text/javascript">
    $(document).ready(function(){
    $('#trip2rightcol').cycle({
      fx: 'fade',
      speed: 2500
    </script>
    <script type="text/javascript">
    $(document).ready(function(){
    $('#trip3rightcol').cycle({
      fx: 'fade',
      speed: 2500
    </script>
    <script type="text/javascript">
    function MM_swapImgRestore() { //v3.0
      var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
    function MM_preloadImages() { //v3.0
      var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
        var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
        if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
    function MM_findObj(n, d) { //v4.01
      var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
      if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
      for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
      if(!x && d.getElementById) x=d.getElementById(n); return x;
    function MM_swapImage() { //v3.0
      var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
       if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
    </script>
    </head>
    <body onload="MM_preloadImages('images/testimg1.jpg')">
    <div id ="container">
      <div id="logowrapper">
             <img src="images/Logo_LightsCameraOceanb2.jpg" width="960" height="105" alt="Logo Lights! Camera! Ocean!" />
            </div> <!-- logowrapper -->
      <div id="wrapper">
       <p class="logoaddon" id="logoaddon">Photo &amp; Video Adventure Travel by Land, Sea &amp; Air</p>
       <div id="navbar">
        <ul>
         <li><a href="NavTextLinkPages/aboutus.html">Home</a></li>
         <li><a href="NavTextLinkPages/aboutus.html">About Us</a></li>
         <li><a href="NavTextLinkPages/aboutus.html">Contact</a></li>
         <li><a href="NavTextLinkPages/aboutus.html">Reservations</a></li>
         <li><a href="NavTextLinkPages/aboutus.html">Gallery</a></li>
         <li><a href="NavTextLinkPages/aboutus.html">Links</a></li>
        </ul>
       </div> <!--navbar -->
       <div id="middletext">
          <div id=expeditions><h1 class="center"><span class="h1middle">Expeditions</span></h1>
                    </div> <!-- expeditions -->
          <div id="colleft" class="floatLeftcol">
        Congratulations on finding your next travel adventure!  Our trips are of varied itineraries with  a focus on photography/ videography on land and under the sea.  Don't forget the view from a hot air balloon, helicopter, or vintage plane!  In  addition to sharing our passion for capturing outstanding images, we'll embrace the history and culture of exotic locations around the world.
           </div> <!-- collleft -->
          <div id="colright" class="floatRightcol">
        Our group may be based at a SCUBA resort, rainforest cabin, liveaboard dive boat, or moving with a desert caravan.
         We may have guest contests, technical workshops, historical underwater films, and screenings of our documentaries featuring other exciting destinations.  Participants of all skill levels are welcome! Let us know if you have something interesting to share.
           </div> <!-- colright -->
                    <br class="clearing"/>
                </div> <!--middle text -->
       <div id="alltrips">
          <p>  </p>
          <div id="trip1">
            <div id="trip1leftcol" class="tripleftcol">
                   <a href="NavTextLinkPages/aboutus.html" onmouseout="MM_swapImgRestore()"
                            onmouseover="MM_swapImage('Image8','','images/Luggage-Tag-Variant3testimgrollb4.jpg',0)">
                             <img src="images/Luggage-Tag-Variant3testimgrollb3.jpg" alt="image8" name="Image8" width="360" height="195" border="0" id="Image8" /></a>
            </div> <!-- trip1leftcol -->
             <div id="trip1midcol" class="tripmidcol">
                <object width="260" height="195">
                 <param name="EgyptVideo" value="http://www.youtube.com/watch?v=9UVFob4Q1D4" />
                 <embed src="http://www.youtube.com/watch?v=9UVFob4Q1D4"
                  type="application/x-shockwave-flash" width="260" height="195" />
               </object>
                        </div> <!-- trip1midcol -->
              <div id="trip1rightcol" class="triprightcol">
                <img src="images/testimg1.jpg" width="290" height="195" alt="testimg1"/>
                <img src="images/testimg2.jpg" width="260" height="195" alt="testimg2"/>
              </div> <!-- trip1rightcol -->
               <p><br class="clearing"/></p>
                    </div> <!-- trip1 -->
          <div id="trip2">
            <div id="trip2leftcol" class="tripleftcol" >
                      <a href="NavTextLinkPages/aboutus.html" onmouseout="MM_swapImgRestore()"
                           onmouseover="MM_swapImage('Image9','','images/Luggage-Tag-Variant3testimgrollb4.jpg',1)">
                         <img src="images/Luggage-Tag-Variant3testimgrollb3.jpg" alt="image9" name="Image9" width="360" height="195" border="0" id="Image9" /></a>
                     </div> <!-- trip2leftcol -->
             <div id="trip2midcol" class="tripmidcol">
                <object width="260" height="195">
                 <param name="EgyptVideo" value="http://www.youtube.com/watch?v=9UVFob4Q1D4" />
                 <embed src="http://www.youtube.com/watch?v=9UVFob4Q1D4"
                  type="application/x-shockwave-flash" width="260" height="195" />
               </object>
                        </div> <!-- trip2pmidcol -->
            <div id="trip2rightcol" class="triprightcol" >
               <img src="images/Luggage-Tag-Variant3.jpg" width="260" height="195" alt="trip pic" />
                        </div> <!-- trip2rightcol -->
             <p><br class="clearing"/></p>
        </div> <!-- trip2 -->
          <div id="trip3">
                     <div id="trip3leftcol" class="tripleftcol" >
                         <a href="NavTextLinkPages/aboutus.html" onmouseout="MM_swapImgRestore()"
                             onmouseover="MM_swapImage('Image10','','images/Luggage-Tag-Variant3testimgrollb4.jpg',1)" >
                            <img src="images/Luggage-Tag-Variant3testimgrollb3.jpg" alt="image10" name="Image10" width="360" height="195" border="0" id="Image10" /></a>
                        </div> <!-- trip3leftcol -->
             <div id="trip3midcol" class="tripmidcol">
                <object width="260" height="195">
                 <param name="EgyptVideo" value="http://www.youtube.com/watch?v=9UVFob4Q1D4" />
                 <embed src="http://www.youtube.com/watch?v=9UVFob4Q1D4"
                    type="application/x-shockwave-flash" width="260" height="195" />
               </object>
                        </div> <!--tri3pmidcol -->
            <div id="trip3rightcol" class="triprightcol" >
               <img src="images/Luggage-Tag-Variant3.jpg" width="260" height="195" alt="trip pic" />
                        </div> <!-- trip3rightcol -->
             <p><br class="clearing"/></p>
        </div> <!-- trip3 -->
           <p> </p>
           <div id=footer>
              <hr align="center" width="900" size="2" color="#586062"/>
              <p class="copyright" id="copyright">Copyright © 2010 Lights! Camera! Ocean!       
                        <a href="NavTextLinkPages/aboutus.html"> Privacy Policy</a> |
              <a href="NavTextLinkPages/aboutus.html">Terms and Conditions</a></p>
        </div> <!-- footer -->
         </div> <!--alltrips -->
        </div> <!--wrapper -->
    </div><!-- container -->
    </body>
    </html>
    /**sylesheet.css
    /** jquery**/
    /**LAYOUT**/
    html,body,p,div,img,h1,h2,h3,h4,li,ul,ol,dl,dd,dt,form,table,td,tr{
    margin:0px;
    padding:0px;
    border:0px;
    border-collapse:separate;
    border-spacing:0px;
    body,td,th {
    color: #F7F8FA;
    font-size: 16px;
    font-family: Arial, Helvetica, sans-serif;
    body {
    margin:0;
    padding:0;
    background-repeat: no-repeat;
    background-color: #222423;
    background-image: url(../images/backgroundwater.jpg);
    background-attachment: fixed;
    #wrapper {
    width: 960px;
    color: #FEF; /**remove this border**/
    margin-top: 0;
    margin-right: auto;
    margin-bottom: 0;
    margin-left: auto;
    background-color: #222423;
    padding: 0px;
    #logowrapper {
    width: 960px;
    margin-top: 0;
    margin-right: auto;
    margin-bottom: 0;
    margin-left: auto;
    padding-top: 15px;
    #trip1rightcol {
    float: left;
    margin-top: 0;
    margin-bottom: 0;
    position: relative;
    margin-left: 20px;
    padding-top: 10px;
    padding-bottom: 10px;
    height: 195px;
    width: 260px;
    overflow: hidden;
    #trip2rightcol {
    float: left;
    margin-top: 0;
    margin-bottom: 0;
    position: relative;
    margin-left: 20px;
    padding-top: 10px;
    padding-bottom: 10px;
    height: 195px;
    width: 260px;
    #trip3rightcol {
    float: left;
    margin-top: 0;
    margin-bottom: 0;
    position: relative;
    margin-left: 20px;
    padding-top: 10px;
    padding-bottom: 10px;
    height: 195px;
    width: 260px;
    .triprightcol {
    width:   260px;
    height:  195px;
    float: left;
    margin-top: 0;
    margin-right: 0;
    margin-bottom: 0;
    margin-left: 20;
    padding-top: 10;
    padding-right: 0;
    padding-bottom: 10;
    padding-left: 0;
    position: relative;
    overflow: hidden;
    .triprightcol img {
    padding: 0;
    border:  0;
    top:  0;
    left: 0;
    float: left;
    height: 195px;
    width: 260px;
    .copyright {
    font-size: 12px;
    text-align: center;
    .logoaddon {
    text-align: center;
    width: 800px;
    border: 2px solid #586062;
    color: #FCFEFD;
    letter-spacing: 3px;
    margin-top: 0;
    margin-right: auto;
    margin-bottom: 0;
    margin-left: auto;
    font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif;
    font-size: 24px;
    line-height: 35px;
    vertical-align: middle;
    /**RE-USABLE CLASSES**/
    /**floats & clearing**/
    .floatRight, .floatLeft {
    width: 350px; /**adjust as needed**/
    padding:10px;
    height: 171px;
    .floatLeft {
    float:left;
    .floatRight {
    float:right;
    .floatRightcol, .floatLeftcol {
    width: 450px;
    height: 105px;
    padding-top: 10px;
    padding-bottom: 10px;
    font-size: 16px;
    .tripleftcol {
    float: left;
    height: 195px;
    width: 360px;
    margin-left: 20px;
    overflow: hidden;
    clip: rect(auto,auto,auto,auto);
    padding-top: 10px;
    padding-right: 0px;
    padding-bottom: 10px;
    padding-left: 0px;
    .tripmidcol {
    float: left;
    height: 195px;
    width: 260px;
    margin-left: 20px;
    padding-top: 10px;
    padding-bottom: 10px;
    .triprightcol {
    float: left;
    height: 195px;
    width: 260px;
    margin-left: 20px;
    padding-top: 10px;
    padding-bottom: 10px;
    position: relative;
    .floatLeftcol {
    float:left;
    text-align: justify;
    margin-right: 0px;
    margin-left: 20px;
    padding-right: 10px;
    .floatRightcol {
    float:right;
    text-align: justify;
    margin-right: 20px;
    padding-left: 10px;
    .clearing {
    clear:both; height:1px; width: 100%
    /**text-align**/
    .left {
    text-align:left;
    .right {
    text-align:right;
    .center {
    text-align:center;
    .h1middle {
    letter-spacing: 2px;
    color: #0067E2;
    padding-top: 0px;
    padding-bottom: 5px;
    /**TOP NAVBAR**/
    #navbar {
    width: 90%;
    text-align:center;
    margin-top: 0;
    margin-right: auto;
    margin-bottom: 0;
    margin-left: auto;
    padding-top: 10px;
    padding-bottom: 10px;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 20px;
    font-weight: lighter;
    padding-right: 0px;
    padding-left: 50px;
    #navbar li {
    margin: 0;
    display: inline;
    list-style-image: none;
    list-style-type: none;
    #navbar li a {
    text-decoration: none;
    padding-top: 0.75em;
    padding-right: 3em;
    padding-bottom: 0.75em;
    padding-left: 0.25em;
    #navbar li a:link {
    color: #C78D23;
    #navbar li a:visited {
    color: #C78D23;
    #navbar li a:hover, #navbar li a.current {
    color: #FFB52C;
    text-decoration:underline;
    overflow: hidden;
    /**end top navbar**/
    /**GENERAL LINKS**/
    a {
    text-decoration:none;
    a:link {
    color: #C78D23;
    a:visited {
    color: #C78D23;
    a:hover, a:active, a:focus {
    color: #FFB52C;
    text-decoration:underline;
    /**GENERAL TEXT STYLES**/
    p {
    line-height: 18px;
    color: #F6F8F7;
    margin-right: 20px;
    margin-left: 20px;
    h2 {
    color: #ec2c18;
    margin-right: 20px;
    margin-left: 20px;
    h1 {
    color: #5b9168;
    margin-right: 20px;
    margin-left: 20px;
    h3 {
    color: #007591;
    margin-right: 20px;
    margin-left: 20px;
    * jquery.cycle.min.js
    * jQuery Cycle Plugin (core engine)
    * Examples and documentation at: http://jquery.malsup.com/cycle/
    * Copyright (c) 2007-2010 M. Alsup
    * Version: 2.88 (08-JUN-2010)
    * Dual licensed under the MIT and GPL licenses.
    * http://jquery.malsup.com/license.html
    * Requires: jQuery v1.2.6 or later
    (function($){var ver="2.88";if($.support==undefined){$.support={opacity:!($.browser.msie)};}function debug(s){if($.fn.cycle.debug){log(s);}}function log(){if(window.console&&window.console.log){window.console.log("[cycle] "+Array.prototype.join.call(arguments," "));}}$.fn.cycle=function(options,arg2){var o={s:this.selector,c:this.context};if(this.length===0&&options!="stop"){if(!$.isReady&&o. s){log("DOM not ready, queuing slideshow");$(function(){$(o.s,o.c).cycle(options,arg2);});return this;}log("terminating; zero elements found by selector"+($.isReady?"":" (DOM not ready)"));return this;}return this.each(function(){var opts=handleArguments(this,options,arg2);if(opts===false){return;}opts.updateActivePagerLi nk=opts.updateActivePagerLink||$.fn.cycle.updateActivePagerLink;if(this.cycleTimeout){clea rTimeout(this.cycleTimeout);}this.cycleTimeout=this.cyclePause=0;var $cont=$(this);var $slides=opts.slideExpr?$(opts.slideExpr,this):$cont.children();var els=$slides.get();if(els.length<2){log("terminating; too few slides: "+els.length);return;}var opts2=buildOptions($cont,$slides,els,opts,o);if(opts2===false){return;}var startTime=opts2.continuous?10:getTimeout(els[opts2.currSlide],els[opts2.nextSlide],opts2, !opts2.rev);if(startTime){startTime+=(opts2.delay||0);if(startTime<10){startTime=10;}debug ("first timeout: "+startTime);this.cycleTimeout=setTimeout(function(){go(els,opts2,0,(!opts2.rev&&!opts.ba ckwards));},startTime);}});};function handleArguments(cont,options,arg2){if(cont.cycleStop==undefined){cont.cycleStop=0;}if(opt ions===undefined||options===null){options={};}if(options.constructor==String){switch(optio ns){case"destroy":case"stop":var opts=$(cont).data("cycle.opts");if(!opts){return false;}cont.cycleStop++;if(cont.cycleTimeout){clearTimeout(cont.cycleTimeout);}cont.cycle Timeout=0;$(cont).removeData("cycle.opts");if(options=="destroy"){destroy(opts);}return false;case"toggle":cont.cyclePause=(cont.cyclePause===1)?0:1;checkInstantResume(cont.cycl ePause,arg2,cont);return false;case"pause":cont.cyclePause=1;return false;case"resume":cont.cyclePause=0;checkInstantResume(false,arg2,cont);return false;case"prev":case"next":var opts=$(cont).data("cycle.opts");if(!opts){log('options not found, "prev/next" ignored');return false;}$.fn.cycle[options](opts);return false;default:options={fx:options};}return options;}else{if(options.constructor==Number){var num=options;options=$(cont).data("cycle.opts");if(!options){log("options not found, can not advance slide");return false;}if(num<0||num>=options.elements.length){log("invalid slide index: "+num);return false;}options.nextSlide=num;if(cont.cycleTimeout){clearTimeout(cont.cycleTimeout);cont.c ycleTimeout=0;}if(typeof arg2=="string"){options.oneTimeFx=arg2;}go(options.elements,options,1,num>=options.currSl ide);return false;}}return options;function checkInstantResume(isPaused,arg2,cont){if(!isPaused&&arg2===true){var options=$(cont).data("cycle.opts");if(!options){log("options not found, can not resume");return false;}if(cont.cycleTimeout){clearTimeout(cont.cycleTimeout);cont.cycleTimeout=0;}go(opti ons.elements,options,1,(!opts.rev&&!opts.backwards));}}}function removeFilter(el,opts){if(!$.support.opacity&&opts.cleartype&&el.style.filter){try{el.styl e.removeAttribute("filter");}catch(smother){}}}function destroy(opts){if(opts.next){$(opts.next).unbind(opts.prevNextEvent);}if(opts.prev){$(opts .prev).unbind(opts.prevNextEvent);}if(opts.pager||opts.pagerAnchorBuilder){$.each(opts.pag erAnchors||[],function(){this.unbind().remove();});}opts.pagerAnchors=null;if(opts.destroy ){opts.destroy(opts);}}function buildOptions($cont,$slides,els,options,o){var opts=$.extend({},$.fn.cycle.defaults,options||{},$.metadata?$cont.metadata():$.meta?$cont .data():{});if(opts.autostop){opts.countdown=opts.autostopCount||els.length;}var cont=$cont[0];$cont.data("cycle.opts",opts);opts.$cont=$cont;opts.stopCount=cont.cycleSto p;opts.elements=els;opts.before=opts.before?[opts.before]:[];opts.after=opts.after?[opts.a fter]:[];opts.after.unshift(function(){opts.busy=0;});if(!$.support.opacity&&opts.cleartyp e){opts.after.push(function(){removeFilter(this,opts);});}if(opts.continuous){opts.after.p ush(function(){go(els,opts,0,(!opts.rev&&!opts.backwards));});}saveOriginalOpts(opts);if(! $.support.opacity&&opts.cleartype&&!opts.cleartypeNoBg){clearTypeFix($slides);}if($cont.cs s("position")=="static"){$cont.css("position","relative");}if(opts.width){$cont.width(opts .width);}if(opts.height&&opts.height!="auto"){$cont.height(opts.height);}if(opts.startingS lide){opts.startingSlide=parseInt(opts.startingSlide);}else{if(opts.backwards){opts.starti ngSlide=els.length-1;}}if(opts.random){opts.randomMap=[];for(var i=0;i<els.length;i++){opts.randomMap.push(i);}opts.randomMap.sort(function(a,b){return Math.random()-0.5;});opts.randomIndex=1;opts.startingSlide=opts.randomMap[1];}else{if(opt s.startingSlide>=els.length){opts.startingSlide=0;}}opts.currSlide=opts.startingSlide||0;v ar first=opts.startingSlide;$slides.css({position:"absolute",top:0,left:0}).hide().each(func tion(i){var z;if(opts.backwards){z=first?i<=first?els.length+(i-first):first-i:els.length-i;}else{z=f irst?i>=first?els.length-(i-first):first-i:els.length-i;}$(this).css("z-index",z);});$(els [first]).css("opacity",1).show();removeFilter(els[first],opts);if(opts.fit&&opts.width){$s lides.width(opts.width);}if(opts.fit&&opts.height&&opts.height!="auto"){$slides.height(opt s.height);}var reshape=opts.containerResize&&!$cont.innerHeight();if(reshape){var maxw=0,maxh=0;for(var j=0;j<els.length;j++){var $e=$(els[j]),e=$e[0],w=$e.outerWidth(),h=$e.outerHeight();if(!w){w=e.offsetWidth||e.width ||$e.attr("width");}if(!h){h=e.offsetHeight||e.height||$e.attr("height");}maxw=w>maxw?w:ma xw;maxh=h>maxh?h:maxh;}if(maxw>0&&maxh>0){$cont.css({width:maxw+"px",height:maxh+"px"});}} if(opts.pause){$cont.hover(function(){this.cyclePause++;},function(){this.cyclePause--;}); }if(supportMultiTransitions(opts)===false){return false;}var requeue=false;options.requeueAttempts=options.requeueAttempts||0;$slides.each(function(){ var $el=$(this);this.cycleH=(opts.fit&&opts.height)?opts.height:($el.height()||this.offsetHei ght||this.height||$el.attr("height")||0);this.cycleW=(opts.fit&&opts.width)?opts.width:($e l.width()||this.offsetWidth||this.width||$el.attr("width")||0);if($el.is("img")){var loadingIE=($.browser.msie&&this.cycleW==28&&this.cycleH==30&&!this.complete);var loadingFF=($.browser.mozilla&&this.cycleW==34&&this.cycleH==19&&!this.complete);var loadingOp=($.browser.opera&&((this.cycleW==42&&this.cycleH==19)||(this.cycleW==37&&this.c ycleH==17))&&!this.complete);var loadingOther=(this.cycleH==0&&this.cycleW==0&&!this.complete);if(loadingIE||loadingFF||lo adingOp||loadingOther){if(o.s&&opts.requeueOnImageNotLoaded&&++options.requeueAttempts<100 ){log(options.requeueAttempts," - img slide not loaded, requeuing slideshow: ",this.src,this.cycleW,this.cycleH);setTimeout(function(){$(o.s,o.c).cycle(options);},opt s.requeueTimeout);requeue=true;return false;}else{log("could not determine size of image: "+this.src,this.cycleW,this.cycleH);}}}return true;});if(requeue){return false;}opts.cssBefore=opts.cssBefore||{};opts.animIn=opts.animIn||{};opts.animOut=opts.an imOut||{};$slides.not(":eq("+first+")").css(opts.cssBefore);if(opts.cssFirst){$($slides[fi rst]).css(opts.cssFirst);}if(opts.timeout){opts.timeout=parseInt(opts.timeout);if(opts.spe ed.constructor==String){opts.speed=$.fx.speeds[opts.speed]||parseInt(opts.speed);}if(!opts .sync){opts.speed=opts.speed/2;}var buffer=opts.fx=="shuffle"?500:250;while((opts.timeout-opts.speed)<buffer){opts.timeout+=o pts.speed;}}if(opts.easing){opts.easeIn=opts.easeOut=opts.easing;}if(!opts.speedIn){opts.s peedIn=opts.speed;}if(!opts.speedOut){opts.speedOut=opts.speed;}opts.slideCount=els.length ;opts.currSlide=opts.lastSlide=first;if(opts.random){if(++opts.randomIndex==els.length){op ts.randomIndex=0;}opts.nextSlide=opts.randomMap[opts.randomIndex];}else{if(opts.backwards) {opts.nextSlide=opts.startingSlide==0?(els.length-1):opts.startingSlide-1;}else{opts.nextS lide=opts.startingSlide>=(els.length-1)?0:opts.startingSlide+1;}}if(!opts.multiFx){var init=$.fn.cycle.transitions[opts.fx];if($.isFunction(init)){init($cont,$slides,opts);}els e{if(opts.fx!="custom"&&!opts.multiFx){log("unknown transition: "+opts.fx,"; slideshow terminating");return false;}}}var e0=$slides[first];if(opts.before.length){opts.before[0].apply(e0,[e0,e0,opts,true]);}if(o pts.after.length>1){opts.after[1].apply(e0,[e0,e0,opts,true]);}if(opts.next){$(opts.next). bind(opts.prevNextEvent,function(){return advance(opts,opts.rev?-1:1);});}if(opts.prev){$(opts.prev).bind(opts.prevNextEvent,functi on(){return advance(opts,opts.rev?1:-1);});}if(opts.pager||opts.pagerAnchorBuilder){buildPager(els,op ts);}exposeAddSlide(opts,els);return opts;}function saveOriginalOpts(opts){opts.original={before:[],after:[]};opts.original.cssBefore=$.exten d({},opts.cssBefore);opts.original.cssAfter=$.extend({},opts.cssAfter);opts.original.animI n=$.extend({},opts.animIn);opts.original.animOut=$.extend({},opts.animOut);$.each(opts.bef ore,function(){opts.original.before.push(this);});$.each(opts.after,function(){opts.origin al.after.push(this);});}function supportMultiTransitions(opts){var i,tx,txs=$.fn.cycle.transitions;if(opts.fx.indexOf(",")>0){opts.multiFx=true;opts.fxs=opt s.fx.replace(/\s*/g,"").split(",");for(i=0;i<opts.fxs.length;i++){var fx=opts.fxs[i];tx=txs[fx];if(!tx||!txs.hasOwnProperty(fx)||!$.isFunction(tx)){log("discar ding unknown transition: ",fx);opts.fxs.splice(i,1);i--;}}if(!opts.fxs.length){log("No valid transitions named; slideshow terminating.");return false;}}else{if(opts.fx=="all"){opts.multiFx=true;opts.fxs=[];for(p in txs){tx=txs[p];if(txs.hasOwnProperty(p)&&$.isFunction(tx)){opts.fxs.push(p);}}}}if(opts.m ultiFx&&opts.randomizeEffects){var r1=Math.floor(Math.random()*20)+30;for(i=0;i<r1;i++){var r2=Math.floor(Math.random()*opts.fxs.length);opts.fxs.push(opts.fxs.splice(r2,1)[0]);}deb ug("randomized fx sequence: ",opts.fxs);}return true;}function exposeAddSlide(opts,els){opts.addSlide=function(newSlide,prepend){var $s=$(newSlide),s=$s[0];if(!opts.autostopCount){opts.countdown++;}els[prepend?"unshift":"p ush"](s);if(opts.els){opts.els[prepend?"unshift":"push"](s);}opts.slideCount=els.length;$s .css("position","absolute");$s[prepend?"prependTo":"appendTo"](opts.$cont);if(prepend){opt s.currSlide++;opts.nextSlide++;}if(!$.support.opacity&&opts.cleartype&&!opts.cleartypeNoBg ){clearTypeFix($s);}if(opts.fit&&opts.width){$s.width(opts.width);}if(opts.fit&&opts.heigh t&&opts.height!="auto"){$slides.height(opts.height);}s.cycleH=(opts.fit&&opts.height)?opts .height:$s.height();s.cycleW=(opts.fit&&opts.width)?opts.width:$s.width();$s.css(opts.cssB efore);if(opts.pager||opts.pagerAnchorBuilder){$.fn.cycle.createPagerAnchor(els.length-1,s ,$(opts.pager),els,opts);}if($.isFunction(opts.onAddSlide)){opts.onAddSlide($s);}else{$s.h ide();}};}$.fn.cycle.resetState=function(opts,fx){fx=fx||opts.fx;opts.before=[];opts.after =[];opts.cssBefore=$.extend({},opts.original.cssBefore);opts.cssAfter=$.extend({},opts.ori ginal.cssAfter);opts.animIn=$.extend({},opts.original.animIn);opts.animOut=$.extend({},opt s.original.animOut);opts.fxFn=null;$.each(opts.original.before,function(){opts.before.push (this);});$.each(opts.original.after,function(){opts.after.push(this);});var init=$.fn.cycle.transitions[fx];if($.isFunction(init)){init(opts.$cont,$(opts.elements),o pts);}};function go(els,opts,manual,fwd){if(manual&&opts.busy&&opts.manualTrump){debug("manualTrump in go(), stopping active transition");$(els).stop(true,true);opts.busy=false;}if(opts.busy){debug("transition active, ignoring new tx request");return;}var p=opts.$cont[0],curr=els[opts.currSlide],next=els[opts.nextSlide];if(p.cycleStop!=opts.st opCount||p.cycleTimeout===0&&!manual){return;}if(!manual&&!p.cyclePause&&!opts.bounce&&((o pts.autostop&&(--opts.countdown<=0))||(opts.nowrap&&!opts.random&&opts.nextSlide<opts.curr Slide))){if(opts.end){opts.end(opts);}return;}var changed=false;if((manual||!p.cyclePause)&&(opts.nextSlide!=opts.currSlide)){changed=true; var fx=opts.fx;curr.cycleH=curr.cycleH||$(curr).height();curr.cycleW=curr.cycleW||$(curr).wid th();next.cycleH=next.cycleH||$(next).height();next.cycleW=next.cycleW||$(next).width();if (opts.multiFx){if(opts.lastFx==undefined||++opts.lastFx>=opts.fxs.length){opts.lastFx=0;}f x=opts.fxs[opts.lastFx];opts.currFx=fx;}if(opts.oneTimeFx){fx=opts.oneTimeFx;opts.oneTimeF x=null;}$.fn.cycle.resetState(opts,fx);if(opts.before.length){$.each(opts.before,function( i,o){if(p.cycleStop!=opts.stopCount){return;}o.apply(next,[curr,next,opts,fwd]);});}var after=function(){$.each(opts.after,function(i,o){if(p.cycleStop!=opts.stopCount){return;} o.apply(next,[curr,next,opts,fwd]);});};debug("tx firing; currSlide: "+opts.currSlide+"; nextSlide: "+opts.nextSlide);opts.busy=1;if(opts.fxFn){opts.fxFn(curr,next,opts,after,fwd,manual&&op ts.fastOnEvent);}else{if($.isFunction($.fn.cycle[opts.fx])){$.fn.cycle[opts.fx](curr,next, opts,after,fwd,manual&&opts.fastOnEvent);}else{$.fn.cycle.custom(curr,next,opts,after,fwd, manual&&opts.fastOnEvent);}}}if(changed||opts.nextSlide==opts.currSlide){opts.lastSlide=op ts.currSlide;if(opts.random){opts.currSlide=opts.nextSlide;if(++opts.randomIndex==els.leng th){opts.randomIndex=0;}opts.nextSlide=opts.randomMap[opts.randomIndex];if(opts.nextSlide= =opts.currSlide){opts.nextSlide=(opts.currSlide==opts.slideCount-1)?0:opts.currSlide+1;}}e lse{if(opts.backwards){var roll=(opts.nextSlide-1)<0;if(roll&&opts.bounce){opts.backwards=!opts.backwards;opts.nextS lide=1;opts.currSlide=0;}else{opts.nextSlide=roll?(els.length-1):opts.nextSlide-1;opts.cur rSlide=roll?0:opts.nextSlide+1;}}else{var roll=(opts.nextSlide+1)==els.length;if(roll&&opts.bounce){opts.backwards=!opts.backwards; opts.nextSlide=els.length-2;opts.currSlide=els.length-1;}else{opts.nextSlide=roll?0:opts.n extSlide+1;opts.currSlide=roll?els.length-1:opts.nextSlide-1;}}}}if(changed&&opts.pager){o pts.updateActivePagerLink(opts.pager,opts.currSlide,opts.activePagerClass);}var ms=0;if(opts.timeout&&!opts.continuous){ms=getTimeout(els[opts.currSlide],els[opts.nextSl ide],opts,fwd);}else{if(opts.continuous&&p.cyclePause){ms=10;}}if(ms>0){p.cycleTimeout=set Timeout(function(){go(els,opts,0,(!opts.rev&&!opts.backwards));},ms);}}$.fn.cycle.updateAc tivePagerLink=function(pager,currSlide,clsName){$(pager).each(function(){$(this).children( ).removeClass(clsName).eq(currSlide).addClass(clsName);});};function getTimeout(curr,next,opts,fwd){if(opts.timeoutFn){var t=opts.timeoutFn.call(curr,curr,next,opts,fwd);while((t-opts.speed)<250){t+=opts.speed;}d ebug("calculated timeout: "+t+"; speed: "+opts.speed);if(t!==false){return t;}}return opts.timeout;}$.fn.cycle.next=function(opts){advance(opts,opts.rev?-1:1);};$.fn.cycle.pre v=function(opts){advance(opts,opts.rev?1:-1);};function advance(opts,val){var els=opts.elements;var p=opts.$cont[0],timeout=p.cycleTimeout;if(timeout){clearTimeout(timeout);p.cycleTimeout=0 ;}if(opts.random&&val<0){opts.randomIndex--;if(--opts.randomIndex==-2){opts.randomIndex=el s.length-2;}else{if(opts.randomIndex==-1){opts.randomIndex=els.length-1;}}opts.nextSlide=o pts.randomMap[opts.randomIndex];}else{if(opts.random){opts.nextSlide=opts.randomMap[opts.r andomIndex];}else{opts.nextSlide=opts.currSlide+val;if(opts.nextSlide<0){if(opts.nowrap){r eturn false;}opts.nextSlide=els.length-1;}else{if(opts.nextSlide>=els.length){if(opts.nowrap){r eturn false;}opts.nextSlide=0;}}}}var cb=opts.onPrevNextEvent||opts.prevNextClick;if($.isFunction(cb)){cb(val>0,opts.nextSlide, els[opts.nextSlide]);}go(els,opts,1,val>=0);return false;}function buildPager(els,opts){var $p=$(opts.pager);$.each(els,function(i,o){$.fn.cycle.createPagerAnchor(i,o,$p,els,opts);} );opts.updateActivePagerLink(opts.pager,opts.startingSlide,opts.activePagerClass);}$.fn.cy cle.createPagerAnchor=function(i,el,$p,els,opts){var a;if($.isFunction(opts.pagerAnchorBuilder)){a=opts.pagerAnchorBuilder(i,el);debug("pagerA nchorBuilder("+i+", el) returned: "+a);}else{a='<a href="#">'+(i+1)+"</a>";}if(!a){return;}var $a=$(a);if($a.parents("body").length===0){var arr=[];if($p.length>1){$p.each(function(){var $clone=$a.clone(true);$(this).append($clone);arr.push($clone[0]);});$a=$(arr);}else{$a.ap pendTo($p);}}opts.pagerAnchors=opts.pagerAnchors||[];opts.pagerAnchors.push($a);$a.bind(op ts.pagerEvent,function(e){e.preventDefault();opts.nextSlide=i;var p=opts.$cont[0],timeout=p.cycleTimeout;if(timeout){clearTimeout(timeout);p.cycleTimeout=0 ;}var cb=opts.onPagerEvent||opts.pagerClick;if($.isFunction(cb)){cb(opts.nextSlide,els[opts.nex tSlide]);}go(els,opts,1,opts.currSlide<i);});if(!/^click/.test(opts.pagerEvent)&&!opts.all owPagerClickBubble){$a.bind("click.cycle",function(){return false;});}if(opts.pauseOnPagerHover){$a.hover(function(){opts.$cont[0].cyclePause++;},fun ction(){opts.$cont[0].cyclePause--;});}};$.fn.cycle.hopsFromLast=function(opts,fwd){var hops,l=opts.lastSlide,c=opts.currSlide;if(fwd){hops=c>l?c-l:opts.slideCount-l;}else{hops= c<l?l-c:l+opts.slideCount-c;}return hops;};function clearTypeFix($slides){debug("applying clearType background-color hack");function hex(s){s=parseInt(s).toString(16);return s.length<2?"0"+s:s;}function getBg(e){for(;e&&e.nodeName.toLowerCase()!="html";e=e.parentNode){var v=$.css(e,"background-color");if(v.indexOf("rgb")>=0){var rgb=v.match(/\d+/g);return"#"+hex(rgb[0])+hex(rgb[1])+hex(rgb[2]);}if(v&&v!="transparent" ){return v;}}return"#ffffff";}$slides.each(function(){$(this).css("background-color",getBg(this)); });}$.fn.cycle.commonReset=function(curr,next,opts,w,h,rev){$(opts.elements).not(curr).hid e();opts.cssBefore.opacity=1;opts.cssBefore.display="block";if(w!==false&&next.cycleW>0){o pts.cssBefore.width=next.cycleW;}if(h!==false&&next.cycleH>0){opts.cssBefore.height=next.c ycleH;}opts.cssAfter=opts.cssAfter||{};opts.cssAfter.display="none";$(curr).css("zIndex",o pts.slideCount+(rev===true?1:0));$(next).css("zIndex",opts.slideCount+(rev===true?0:1));}; $.fn.cycle.custom=function(curr,next,opts,cb,fwd,speedOverride){var $l=$(curr),$n=$(next);var speedIn=opts.speedIn,speedOut=opts.speedOut,easeIn=opts.easeIn,easeOut=opts.easeOut;$n.cs s(opts.cssBefore);if(speedOverride){if(typeof speedOverride=="number"){speedIn=speedOut=speedOverride;}else{speedIn=speedOut=1;}easeIn= easeOut=null;}var fn=function(){$n.animate(opts.animIn,speedIn,easeIn,cb);};$l.animate(opts.animOut,speedOu t,easeOut,function(){if(opts.cssAfter){$l.css(opts.cssAfter);}if(!opts.sync){fn();}});if(o pts.sync){fn();}};$.fn.cycle.transitions={fade:function($cont,$slides,opts){$slides.not(": eq("+opts.currSlide+")").css("opacity",0);opts.before.push(function(curr,next,opts){$.fn.c ycle.commonReset(curr,next,opts);opts.cssBefore.opacity=0;});opts.animIn={opacity:1};opts. animOut={opacity:0};opts.cssBefore={top:0,left:0};}};$.fn.cycle.ver=function(){return ver;};$.fn.cycle.defaults={fx:"fade",timeout:4000,timeoutFn:null,continuous:0,speed:1000, speedIn:null,speedOut:null,next:null,prev:null,onPrevNextEvent:null,prevNextEvent:"click.c ycle",pager:null,onPagerEvent:null,pagerEvent:"click.cycle",allowPagerClickBubble:false,pa gerAnchorBuilder:null,before:null,after:null,end:null,easing:null,easeIn:null,easeOut:null ,shuffle:null,animIn:null,animOut:null,cssBefore:null,cssAfter:null,fxFn:null,height:"auto ",startingSlide:0,sync:1,random:0,fit:0,containerResize:1,pause:0,pauseOnPagerHover:0,auto stop:0,autostopCount:0,delay:0,slideExpr:null,cleartype:!$.support.opacity,cleartypeNoBg:f alse,nowrap:0,fastOnEvent:0,randomizeEffects:1,rev:0,manualTrump:true,requeueOnImageNotLoa ded:true,requeueTimeout:250,activePagerClass:"activeSlide",updateActivePagerLink:null,back wards:false};})(jQuery);
    /* jquery.cycle.lit.js
    * jQuery Cycle Lite Plugin
    * http://malsup.com/jquery/cycle/lite/
    * Copyright (c) 2008 M. Alsup
    * Version: 1.0 (06/08/2008)
    * Dual licensed under the MIT and GPL licenses:
    * http://www.opensource.org/licenses/mit-license.php
    * http://www.gnu.org/licenses/gpl.html
    * Requires: jQuery v1.2.3 or later
    ;(function($) {
    var ver = 'Lite-1.0';
    $.fn.cycle = function(options) {
        return this.each(function() {
            options = options || {};
            if (this.cycleTimeout) clearTimeout(this.cycleTimeout);
            this.cycleTimeout = 0;
            this.cyclePause = 0;
            var $cont = $(this);
            var $slides = options.slideExpr ? $(options.slideExpr, this) : $cont.children();
            var els = $slides.get();
            if (els.length < 2) {
                if (window.console && window.console.log)
                    window.console.log('terminating; too few slides: ' + els.length);
                return; // don't bother
            // support metadata plugin (v1.0 and v2.0)
            var opts = $.extend({}, $.fn.cycle.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {});
            opts.before = opts.before ? [opts.before] : [];
            opts.after = opts.after ? [opts.after] : [];
            opts.after.unshift(function(){ opts.busy=0; });
            // allow shorthand overrides of width, height and timeout
            var cls = this.className;
            opts.width = parseInt((cls.match(/w:(\d+)/)||[])[1]) || opts.width;
            opts.height = parseInt((cls.match(/h:(\d+)/)||[])[1]) || opts.height;
            opts.timeout = parseInt((cls.match(/t:(\d+)/)||[])[1]) || opts.timeout;
            if ($cont.css('position') == 'static')
                $cont.css('position', 'relative');
            if (opts.width)
                $cont.width(opts.width);
            if (opts.height && opts.height != 'auto')
                $cont.height(opts.height);
            var first = 0;
            $slides.css({position: 'absolute', top:0, left:0}).hide().each(function(i) {
                $(this).css('z-index', els.length-i)
            $(els[first]).css('opacity',1).show(); // opacity bit needed to handle reinit case
            if ($.browser.msie) els[first].style.removeAttribute('filter');
            if (opts.fit && opts.width)
                $slides.width(opts.width);
            if (opts.fit && opts.height && opts.height != 'auto')
                $slides.height(opts.height);
            if (opts.pause)
                $cont.hover(function(){this.cyclePause=1;}, function(){this.cyclePause=0;});
            $.fn.cycle.transitions.fade($cont, $slides, opts);
            $slides.each(function() {
                var $el = $(this);
                this.cycleH = (opts.fit && opts.height) ? opts.height : $el.height();
                this.cycleW = (opts.fit && opts.width) ? opts.width : $el.width();
            $slides.not(':eq('+first+')').css({opacity:0});
            if (opts.cssFirst)
                $($slides[first]).css(opts.cssFirst);
            if (opts.timeout) {
                // ensure that timeout and speed settings are sane
                if (opts.speed.constructor == String)
                    opts.speed = {slow: 600, fast: 200}[opts.speed] || 400;
                if (!opts.sync)
                    opts.speed = opts.speed / 2;
                while((opts.timeout - opts.speed) < 250)
                    opts.timeout += opts.speed;
            opts.speedIn = opts.speed;
            opts.speedOut = opts.speed;
       opts.slideCount = els.length;
            opts.currSlide = first;
            opts.nextSlide = 1;
            // fire artificial events
            var e0 = $slides[first];
            if (opts.before.length)
                opts.before[0].apply(e0, [e0, e0, opts, true]);
            if (opts.after.length > 1)
                opts.after[1].apply(e0, [e0, e0, opts, true]);
            if (opts.click && !opts.next)
                opts.next = opts.click;
            if (opts.next)
                $(opts.next).bind('click', function(){return advance(els,opts,opts.rev?-1:1)});
            if (opts.prev)
                $(opts.prev).bind('click', function(){return advance(els,opts,opts.rev?1:-1)});
            if (opts.timeout)
                this.cycleTimeout = setTimeout(function() {
                    go(els,opts,0,!opts.rev)
                }, opts.timeout + (opts.delay||0));
    function go(els, opts, manual, fwd) {
        if (opts.busy) return;
        var p = els[0].parentNode, curr = els[opts.currSlide], next = els[opts.nextSlide];
        if (p.cycleTimeout === 0 && !manual)
            return;
        if (manual || !p.cyclePause) {
            if (opts.before.length)
                $.each(opts.before, function(i,o) { o.apply(next, [curr, next, opts, fwd]); });
            var after = function() {
                if ($.browser.msie)
                    this.style.removeAttribute('filter');
                $.each(opts.after, function(i,o) { o.apply(next, [curr, next, opts, fwd]); });
            if (opts.nextSlide != opts.currSlide) {
                opts.busy = 1;
                $.fn.cycle.custom(curr, next, opts, after);
            var roll = (opts.nextSlide + 1) == els.length;
            opts.nextSlide = roll ? 0 : opts.nextSlide+1;
            opts.currSlide = roll ? els.length-1 : opts.nextSlide-1;
        if (opts.timeout)
            p.cycleTimeout = setTimeout(function() { go(els,opts,0,!opts.rev) }, opts.timeout);
    // advance slide forward or back
    function advance(els, opts, val) {
        var p = els[0].parentNode, timeout = p.cycleTimeout;
        if (timeout) {
            clearTimeout(timeout);
            p.cycleTimeout = 0;
        opts.nextSlide = opts.currSlide + val;
        if (opts.nextSlide < 0) {
            opts.nextSlide = els.length - 1;
        else if (opts.nextSlide >= els.length) {
            opts.nextSlide = 0;
        go(els, opts, 1, val>=0);
        return false;
    $.fn.cycle.custom = function(curr, next, opts, cb) {
        var $l = $(curr), $n = $(next);
        $n.css({opacity:0});
        var fn = function() {$n.animate({opacity:1}, opts.speedIn, opts.easeIn, cb)};
        $l.animate({opacity:0}, opts.speedOut, opts.easeOut, function() {
            $l.css({display:'none'});
            if (!opts.sync) fn();
        if (opts.sync) fn();
    $.fn.cycle.transitions = {
        fade: function($cont, $slides, opts) {
            $slides.not(':eq(0)').css('opacity',0);
            opts.before.push(function() { $(this).show() });
    $.fn.cycle.ver = function() { return ver; };
    // @see: http://malsup.com/jquery/cycle/lite/
    $.fn.cycle.defaults = {
        timeout:       4000,
        speed:         1000,
        next:          null,
        prev:          null,
        before:        null,
        after:         null,
        height:       'auto',
        sync:          1,   
        fit:           0,   
        pause:         0,   
        delay:         0,   
        slideExpr:     null 
    })(jQuery);

    I got it cycling. Must've had bad code. Used different code.

  • Changing the application wide default focus traversal policy

    Hi,
    I have a Swing application built using JDK1.3 where there lots of screens (frames, dialogs with complex screens - panels, tables, tabbed panes etc), in some screens layouts have been used and in other screens instead of any layout, absolute positions and sizes of the controls have been specified.
    In some screens setNextFocusableComponent() methods for some components have been called at some other places default focus traversal is used. (which I think is the order in which the components are placed and their postions etc). Focus traversal in each screen works fine.
    Now I have to migrate to JDK1.4. Problem now is that after migrating to JDK1.4.2, focus traversal has become a headache. In some screens there is no focus traversal and in some there is it is not what I wanted.
    So I thought to replace applicaiton wide default focus traversal policy and I did the following:
    ///////// Replace default focus traversal policy
    java.awt.KeyboardFocusManager.getCurrentKeyboardFocusManager().setDefaultFocusTraversalPolicy(new java.awt.ContainerOrderFocusTraversalPolicy());
    But there is no change in the behaviour.
    Then I tried following:
    ///////// Replace default focus traversal policy
    java.awt.KeyboardFocusManager.getCurrentKeyboardFocusManager().setDefaultFocusTraversalPolicy(new java.awt.DefaultFocusTraversalPolicy());
    I did all this in the main() method of the application before anything else just to ensure that all the components get added after this policy has been set. But no luck.
    Does someone has any idea what is the problem here ? I do not want to define my own focus traversal policy for each screen that I use (because thats lot of codes).
    Thanks

    not that hard if you only have the one focus cycle ( > 1 cycle and it gets a bit harder, sometimes stranger)
    import javax.swing.*;
    import java.awt.*;
    class Testing
      int focusNumber = 0;
      public void buildGUI()
        JTextField[] tf = new JTextField[10];
        JPanel p = new JPanel(new GridLayout(5,2));
        for(int x = 0, y = tf.length; x < y; x++)
          tf[x] = new JTextField(5);
          p.add(tf[x]);
        final JTextField[] focusList = new JTextField[]{tf[1],tf[0],tf[3],tf[2],tf[5],tf[4],tf[7],tf[6],tf[9],tf[8]};
        JFrame f = new JFrame();
        f.setFocusTraversalPolicy(new FocusTraversalPolicy(){
          public Component getComponentAfter(Container focusCycleRoot,Component aComponent)
            focusNumber = (focusNumber+1) % focusList.length;
            return focusList[focusNumber];
          public Component getComponentBefore(Container focusCycleRoot,Component aComponent)
            focusNumber = (focusList.length+focusNumber-1) % focusList.length;
            return focusList[focusNumber];
          public Component getDefaultComponent(Container focusCycleRoot){return focusList[0];}
          public Component getLastComponent(Container focusCycleRoot){return focusList[focusList.length-1];}
          public Component getFirstComponent(Container focusCycleRoot){return focusList[0];}
        f.getContentPane().add(p);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
      public static void main(String[] args)
        SwingUtilities.invokeLater(new Runnable(){
          public void run(){
            new Testing().buildGUI();
    }

  • Focus handling when TableCellEditor is removed

    Hi,
    I have a problem finding out what the exact focus behavior is when in JTable the editor is closed. There seems to be a difference when using editor components that are panel based and editor components that are not panel based. When I use a Component (returned by TableCellEditor.getTableCellEditorComponent) like a JTextField the focus goes back to the JTable so that it indicates the focused cell (the one that was edited). When I use a component based on JPanel the focus traverses when closing the editor to the next component in the focus cycle (after the JTable).
    Did anyone every see this behavior before, what is the cause of this and obviously how can it be specified that the behavior for the JPanel should be the same as for the JTextField.
    The environment that I am working on is IBM JDK 1.4.2 for Windows.
    If anybody has a good reference for documentation on focus handling and especially how to debug it, this is also very welcome!
    Many thanks,
    Marcel

    Does anyone have a good understanding of this method in Component:
        public void removeNotify() {This seems like the method that orchestrates the focus change when a component is removed from another component. I don't see why JPanel instances are handled differently from JComponent instances.
    By the way this solves my problem a bit: adding these lines of code in an overridden implementation of removeEditor in subclass of JTable (just before setting editorComp to null):
        if (editorComp instanceof JPanel){
           requestFocusInWindow();
        }But the problem is that in this case first the focus goes to the next component and then it goes back to the table. (which could have side effects if the next component changes state because of receiving the focus).
    Any comments would be welcome.
    Thanks,
    Marcel

Maybe you are looking for

  • Apache + php blank page (again)

    Hey, i got problems with php and apache, its just that when i have PHP enabled, apache aint serving me anything, i checked permissions, triple checked all my configs and i still cant find the mistake, i also searched this board but nothing helped me,

  • Change status for sales order in crmd_order

    Hi, I am creating a report which has to change for all sales order with status "Open" to status "Processed". Is there any function or bapi to do this ?? Supposing, there is no function, which tables do i have to change ??? thanks in advance!!! Maria

  • Re-open windows from last session in Apps like Pages, Preview and more

    Just migrate to Yosemite and I'm a bit concern that my main apps like Pages, Preview, Texedit that used to open all the windows documents from the last session, now they are not. Do Apple got rid of this function in Yosemite or is there a way to abil

  • Listing all fonts used in a document?

       As I understand it, TextFonts is a collection of all fonts available to Illustraot.  Is there a collection of all fonts used in the open document?  Or would I have to step through every textFrame an create that list myself?

  • OSS Notes...

    Hi Gurus, I am going through the "How to Handle...Inventory Management Scenarios in BW" and came across the mention of the following OSS Notes. I will really appreciate if any of you can email them to me at [email protected] 315880 353042 486784 5057