Hi Marco,

>Has anybody an advice for my previous problem?
>http://lists.canoo.com/mailman/private/ulc-developer/2007/005345.html

>I want to leave the textarea with tab instead of using ctrl+tab,

>Is there a way to disable the page up/down keys for the textarea,

For all of the above, see the snippet below.

>Is there a way to disable the page up/down keys for the textarea,
>because i want to scroll always the whole pane and not the
>textarea.

>Is there a property or sth like this to scroll a scrollpane
>automatically down when the user goes down the page by tab?

Please explain the above.

Thanks and regards,

Janak


>-----Original Message-----
>From: [EMAIL PROTECTED]
>[mailto:[EMAIL PROTECTED] Behalf Of
>[EMAIL PROTECTED]
>Sent: Thursday, March 01, 2007 10:59 AM
>To: [email protected]
>Subject: [ULC-developer] textarea focustraversalkeys valueChangedEvent ,
>scrollpane autoscroll
>
>
>
>Hi all,
>i have another navigation problem:
>
>I want to leave the textarea with tab instead of using ctrl+tab,
>therefore i have implemented following client-extension:
>
>public class UIDachBasicTextArea extends UITextArea {
>
>      protected Object createBasicObject(Object [] args){
>
>
>          return new DachBasicTextArea();
>      }
>
>      protected void postInitializeState(){
>
>            //leave textarea ONLY with tab or shift-tab
>
>getBasicTextArea().setFocusTraversalKeys(KeyboardFocusManager.FORWA
>RD_TRAVERSAL_KEYS,
> null);
>
>getBasicTextArea().setFocusTraversalKeys(KeyboardFocusManager.BACKW
>ARD_TRAVERSAL_KEYS,
> null);
>      }
>
>      public class DachBasicTextArea extends BasicTextArea{
>
>            public DachBasicTextArea() {
>                  super();
>                  // TODO Auto-generated constructor stub
>            }
>      }
>}
>
>The problem is that the valueChangedEvent is not fireing anymore.
>has anybody a suggestion?
>
>Is there a way to disable the page up/down keys for the textarea,
>because i want to scroll always the whole pane and not the
>textarea.
>
>Has anybody an advice for my previous problem?
>http://lists.canoo.com/mailman/private/ulc-developer/2007/005345.html
>
>Is there a property or sth like this to scroll a scrollpane
>automatically down when the user goes down the page by tab?
>
>Thx and greetings
>marco
-----------------------------
package tabkeyintable;

import java.awt.Component;
import java.awt.Container;
import java.awt.FocusTraversalPolicy;
import java.awt.event.KeyEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.InputMap;
import javax.swing.JScrollBar;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;

import com.ulcjava.base.application.AbstractApplication;
import com.ulcjava.base.application.ULCBoxPane;
import com.ulcjava.base.application.ULCButton;
import com.ulcjava.base.application.ULCComponent;
import com.ulcjava.base.application.ULCFrame;
import com.ulcjava.base.application.ULCScrollPane;
import com.ulcjava.base.application.ULCTable;
import com.ulcjava.base.application.ULCTextArea;
import com.ulcjava.base.application.event.ActionEvent;
import com.ulcjava.base.application.event.IActionListener;
import com.ulcjava.base.application.event.IListSelectionListener;
import com.ulcjava.base.application.event.IValueChangedListener;
import com.ulcjava.base.application.event.ListSelectionEvent;
import com.ulcjava.base.application.event.ValueChangedEvent;
import com.ulcjava.base.application.table.DefaultTableModel;
import com.ulcjava.base.application.table.ITableModel;
import com.ulcjava.base.client.UITable;
import com.ulcjava.base.client.UITextArea;
import com.ulcjava.base.development.DevelopmentRunner;

public class DisableTabInTableAndTextAreaSnippet extends AbstractApplication
{

    protected ULCComponent createContent() {
        ULCTable table = new MyULCTable(new DefaultTableModel(new Object[][]
{ { "0", "0" }, { "1", "1" } },
                new String[] { "Col1", "Col2" }));
        table.addActionListener(new IActionListener() {
            public void actionPerformed(ActionEvent event) {
                System.out.println("Action event");
            }
        });

        table.getColumnModel().getSelectionModel().addListSelectionListener(
new IListSelectionListener() {
            public void valueChanged(ListSelectionEvent event) {
                System.out.println("Selection event");
            }
        });

        ULCScrollPane spane = new ULCScrollPane(table);
        return spane;
    }

    public void start() {
        ULCFrame frame = new ULCFrame("ULCTableFocusGainedSnippet");
        frame.setDefaultCloseOperation(ULCFrame.TERMINATE_ON_CLOSE);

        ULCBoxPane content = new ULCBoxPane(true);

        ULCButton but1 = new ULCButton("Button1");
        content.add(ULCBoxPane.BOX_CENTER_TOP, but1);
        content.add(ULCBoxPane.BOX_EXPAND_EXPAND, createContent());

        ULCTextArea textArea = new MyULCTextArea();
        textArea.addValueChangedListener(new IValueChangedListener() {
            public void valueChanged(ValueChangedEvent event) {
                System.out.println("Value Changed");
            }
        });
        ULCScrollPane textScroll = new ULCScrollPane(textArea);
        content.add(ULCBoxPane.BOX_EXPAND_EXPAND, textScroll);
        frame.add(content);
        frame.setSize(200, 300);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        DevelopmentRunner.setApplicationClass(DisableTabInTableAndTextAreaSn
ippet.class);
        DevelopmentRunner.main(args);
    }

    public static class MyULCTable extends ULCTable {
        public MyULCTable(ITableModel model) {
            super(model);
        }

        protected String typeString() {
            return MyUITable.class.getName();
        }
    }

    public static class MyUITable extends UITable {
        protected void postInitializeState() {
            super.postInitializeState();

            JTable table = getBasicTable();
            table.setFocusTraversalKeysEnabled(true);

            InputMap im =
table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
            KeyStroke tab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);
            Action tabAction = new TabAction();
            table.getActionMap().put(im.get(tab), tabAction);
        }

        public static class TabAction extends AbstractAction {
            public TabAction() {
                super();
            }

            public void actionPerformed(java.awt.event.ActionEvent e) {
                JTable table = (JTable)e.getSource();
                Container cycleRoot = table.getFocusCycleRootAncestor();
                FocusTraversalPolicy policy =
table.getFocusTraversalPolicy();
                if (policy == null && cycleRoot != null) {
                    policy = cycleRoot.getFocusTraversalPolicy();
                }

                Component target = policy.getComponentAfter(cycleRoot,
table);

                if (target != null)
                    target.requestFocusInWindow();
            }
        }
    }

    public static class MyULCTextArea extends ULCTextArea {
        protected String typeString() {
            return MyUITextArea.class.getName();
        }
    }

    public static class MyUITextArea extends UITextArea {
        protected void postInitializeState() {
            super.postInitializeState();

            JTextArea text = getBasicTextArea();
            text.setFocusTraversalKeysEnabled(true);

            InputMap im = text.getInputMap(JTextArea.WHEN_FOCUSED);
            KeyStroke tab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);
            KeyStroke pgup = KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_UP, 0);
            KeyStroke pgdn = KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_DOWN,
0);

            Action tabAction = new TextTabAction();
            text.getActionMap().put(im.get(tab), tabAction);

            text.getActionMap().put(im.get(pgup), new AbstractAction() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                }
            });
            text.getActionMap().put(im.get(pgdn), new AbstractAction() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                }
            });
        }

        public static class TextTabAction extends AbstractAction {

            public TextTabAction() {
                super();
            }

            public void actionPerformed(java.awt.event.ActionEvent e) {
                JTextArea text = (JTextArea)e.getSource();
                Container cycleRoot = text.getFocusCycleRootAncestor();
                FocusTraversalPolicy policy =
text.getFocusTraversalPolicy();
                if (policy == null && cycleRoot != null) {
                    policy = cycleRoot.getFocusTraversalPolicy();
                }

                Component target = policy.getComponentAfter(cycleRoot,
text);

                while ((target instanceof JScrollBar)) {
                    target = policy.getComponentAfter(cycleRoot, target);
                }
                if (target != null)
                    target.requestFocusInWindow();
            }
        }
    }
}

_______________________________________________
ULC-developer mailing list
[email protected]
http://lists.canoo.com/mailman/listinfo/ulc-developer

Reply via email to