JTable disable column selection

Do we have a convenient way to disable the selection/focusing of a single column in a JTable while tabbing thorugh the tablecells?

You can customize the tabbing by using the approach discussed in [Table Tabbing|http://www.camick.com/java/blog.html?name=table-tabbing].

Similar Messages

  • Webdynpro ABAP ALV in SAP ECC6 - EHP4: To disable Column Selection

    Hi All,
    We are using SAP ECC6 EHP4 and  for Webdynpro ABAP application, after each column a vertical white line is appearing, and I need to hide this..
    SAP suggested us to disable COLUMN SELECTION I have tried the below code but still I am not able to get this done..
    Can you please suggest the appropriate method to achieve the same.
    Code:
    * show tab COLUMN SELECTION in Settings page
    CALL METHOD wd_this->alv_conf_table->if_salv_wd_std_functions~set_column_selection_allowed
      EXPORTING value = ABAP_false..
    here alv_conf_table refers to CL_SALV_WD_CONFIG_TABLE.
    Thanks in advance.
    Thanks
    Srinivas
    Edited by: Srinivas Manchi on Apr 22, 2010 11:35 AM
    Edited by: Srinivas Manchi on Apr 22, 2010 1:06 PM

    You have to disable the DDic binding on the column before your override text will show up:
    data: l_ref_cmp_usage type ref to if_wd_component_usage.
      l_ref_cmp_usage =   wd_this->wd_cpuse_alv( ).
      if l_ref_cmp_usage->has_active_component( ) is initial.
        l_ref_cmp_usage->create_component( ).
      endif.
      data l_salv_wd_table type ref to iwci_salv_wd_table.
      l_salv_wd_table = wd_this->wd_cpifc_alv( ).
      data l_table type ref to cl_salv_wd_config_table.
      l_table = l_salv_wd_table->get_model( ).
      data l_column type ref to cl_salv_wd_column.
      l_column = l_table->if_salv_wd_column_settings~get_column( 'POSTING_DATE' ).
      data l_header type ref to cl_salv_wd_column_header.
      l_header = l_column->get_header( ).
      l_header->set_prop_ddic_binding_field(
        property =  if_salv_wd_c_ddic_binding=>bind_prop_text
        value = if_salv_wd_c_ddic_binding=>ddic_bind_none ).
      l_header->set_text( `Posting Date` ).

  • Jtable - disable mouse selection

    hello,
    i did like to disable row selection in a jtable by mouse.
    in fact, the user should not be able to select rows in the table, but programmatily it should work.
    any ideas?
    thank you
    greets
    lukas

    You could try removing all the MouseListeners from the table. I don't know what other functionality you would lose.
    MouseListener[] listeners = (MouseListener[])table.getListeners(MouseListener.class);
    for (int i = 0; i < listeners.length; i++)
         table.removeMouseListener( listeners[i] );

  • JTable - Column swap disabling for selected columns

    Hi,
    In my JTable i want to disable the swapping of selected columns, table.getTableHeader().setReorderingAllowed(false); this disables the whole table swapping.
    Is there anyway to disable only selected column swapping?
    Thanks in advance.
    Yours,
    Arun

    I was able to disable the column swapping in all the ways, i.e. i've solved the problem that i've said in my previous post.
    The following are the scenario'scovered, if the user wants to disable swapping of 1st and 2nd column of a JTable
    1. Donot allow dragging of the 1st and 2nd column and
    2. If the user drag-drop 3 or 4 th column in place of 1st or 2nd column, then undo the swap operation by re-swapping the columns.
    Try the following example
    import java.awt.Point;
    import java.awt.event.MouseEvent;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.event.MouseInputListener;
    import javax.swing.plaf.basic.BasicTableHeaderUI;
    import javax.swing.table.JTableHeader;
    import javax.swing.table.TableColumnModel;
    public class FixedTableColumnsExample
        FixedTableColumnsExample()
            String[] columnNames = {"First","Last Name","Sport","# of Years","Vegetarian"};
              Object[][] data = {
              {"Mary", "Campione","Snowboarding", new Integer(5), new Boolean(false)},
              {"Alison", "Huml","Rowing", new Integer(3), new Boolean(true)},
              {"Kathy", "Walrath","Knitting", new Integer(2), new Boolean(false)},
              {"Sharon", "Zakhour","Speed reading", new Integer(20), new Boolean(true)},
              {"Philip", "Milne","Pool", new Integer(10), new Boolean(false)}
              JTable table = new JTable(data, columnNames);
            TableColumnModel columnModel = table.getColumnModel();
            EditableHeader test = new EditableHeader(columnModel);
            table.setTableHeader(test);  
            JFrame frame = new JFrame("Table Fixed Column Demo");
            frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
            JScrollPane scrollPane = new JScrollPane(table);
            frame.getContentPane().add( scrollPane );
            frame.setSize(400, 300);
            frame.setVisible(true);
        public static void main(String[] args)
            new FixedTableColumnsExample();
    class EditableHeader extends JTableHeader
        public EditableHeader(TableColumnModel columnModel)
            super(columnModel);
        public void updateUI()
            setUI(new EditableHeaderUI());
    class EditableHeaderUI extends BasicTableHeaderUI
        boolean is1and2Swapped  = true;
        protected MouseInputListener createMouseInputListener()
            return new MouseInputHandler((EditableHeader) header);
        class MouseInputHandler extends BasicTableHeaderUI.MouseInputHandler
            protected EditableHeader header;
             public MouseInputHandler(EditableHeader header)
                 this.header = header;
             public void mouseDragged(MouseEvent e)
                 int draggedColumnIndex = ((EditableHeader)e.getSource()).getDraggedColumn().getModelIndex();
                 if(draggedColumnIndex != 0 && draggedColumnIndex != 1 )
                     super.mouseDragged(e);
                     is1and2Swapped = true;
                 else
                     is1and2Swapped = false;
             public void mouseReleased(MouseEvent e)
                 int draggedColumnIndex = ((EditableHeader)e.getSource()).getDraggedColumn().getModelIndex();
                 Point p = e.getPoint();
                 TableColumnModel columnModel = header.getColumnModel();
                 if(p.x < 0)
                     p.x = 0;
                 int index = columnModel.getColumnIndexAtX(p.x);
                 super.mouseReleased(e);
                 if((index == 0 || index == 1) && is1and2Swapped)
                   header.getColumnModel().moveColumn(index,draggedColumnIndex);
    }Is there anyother better way to do the swap disabling? If so please suggest me.
    This solution is having one disadvantage.
    Consider the following scenario,
    a) 1 and 2 are fixed columns.
    b) Move column 4 to 3rd position
    c) Move new 3rd column to 1st or 2nd column's position
    d) the new 3rd column is moving to position 4(its original position when the model was created) instead of position 3.
    This is because the TableColumModel is not updated properly. I'm working on that. Any Suggestions?
    Thanks
    Arun.

  • OBIEE - How to selectively hide or disable columns on a dashboard prompt?

    Hello! I need some help with OBIEE dashboard Prompts. Any help will be highly appreciated!
    Question 1. How to selectively hide or disable columns on a dashboard prompt or the entire prompt? There seems to be no "hide" or "dsable" options on
    prompts.
    Question 2. How to synchronize 2 different prompts on the same dashboard?
    The application is this: There are total of 2 tabs on a dashboard ("tab_1" and "tab_2"). Each tab uses different prompts ("pr_1" and "pr_2"), having just one first drop down column in common ("Product_id").
    The desired functionality is this: user selects "Product_id" on the first tab's prompt, which filters its reports (on "Go") and also propagates to the second tab. When user clicks on the second tab, the reports there are already filtered (or begin filtering) by "product_id", selected on the first tab.
    Question 3. How to prevent the reports from retrieving when switching to a different tab on a dshboard? Specifying dummy default values in the prompt does
    not seem to preven reports from retrieving, which still takes time.
    Thank you very much!
    Roger

    Regarding Question 2:
    What you need to have is a Dashboard scope dashboard prompt for Product_ID (i.e., Don't use the column prompt from the prompt tab within the Request.)
    1) Create the dashboard prompt, put it on tab1 and save the prompt to a presentation variable, say prmtProdID. Set the scope to "dashboard." (This is the default, by the way.) If you create a dashboard prompt and set the scope to "dashboard," then the prompt values selected will hold true across dashboard pages.
    2) On tab2, go to your report and in Criteria mode, apply a filter to the Product_ID column making it equal to the PV. (Click the filter icon, Add>Variable>Presentation Variable and type prmtProdID. Save.)
    When the user selects a Product_ID on tab1 of your dashboard and hits "Go," not only will it filter your report on tab1, when you go to tab2 the report here will be filtered with the same value selected in the prompt on tab2.
    Regarding Question 3:
    If you implement 2, you cannot implement 3. You can't have it both ways. Not for the same scenario. But if you want to know how to do it in general, read this:
    http://obieeone.com/2009/08/24/how-to-stop-queries-to-automatically-fire-off-once-entering-dashboarddashboard-page/

  • JTable disable editing, row selecion

    hii all,
    i want to disable the cell editing in the JTable and select a complete row.
    i tried with more than a way but faild.

    You have to write a separate CellEditor class with overriding isCellEditable() returning false.
    public class MyTableCellEditor extends DefaultCellEditor
    public MyTableCellEditor (JTextField textField)
    super(textField);
    public boolean isCellEditable(EventObject e)
    return false;
    public boolean shouldSelectCell()
    return true;
    and then get the TableColumn object, say tcm,of the JTable's Column.
    And then tcm.setCellEditor(new MyCellEditor(new JTextField())) to an instance of the above CellEditor class.
    And also call JTable methods as setRowSelectionEnabled(true) etc..

  • Not null and enable or disable  column in tabular form

    Hi,
    Using apex version 4.1 and working on tabular form.
    ACT_COA_SEGMENT_MAS is Master table
    and
    ACT_SEGMENT_VALUES_MAS is detail table
    I have entered 8 rows in master table and PARENT_SEGMENT_ID is column in master table which is null able. If i specified PARENT_SEGMENT_ID with value in master table then in detail table there is column PARENT_ID that should not be null and enable.
    How i can enable or disable column when in master table PARENT_SEGMENT_ID column is null then in detail table PARENT_ID column should disable and vice versa.
    I have created tabular form on Detail table. before insert into the tabular form Check in master table in first entry if PARENT_SEGMENT_ID is not null in first row of master table then in tabular form PARENT_ID should enable and not null able in corresponding to this first row id's lines in tabular form.
    Same should check for second row in master table if PARENT_SEGMENT_ID is not null then entered rows with PARENT_ID into tabular form corresponding to 2nd id in master table should not nullable and column should enable in tabular form.
    Thanks & Regards
    Vedant
    Edited by: Vedant on Jan 9, 2013 9:12 PM

    Vedant,
    You need to create you own manual tabular form and not use the wizard.
    Using APEX_ITEM api you should be build you own form and you will be able to control how you wan to display the rows. (See Link [Apex Item Help|http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35127/apex_item.htm#CACEEEJE] )
    select case when PRIMARY_TABLE_COLUMN is null then APEX_ITEM.DISPLAY_AND_SAVE(3 , DETAIL_COLUMN ) else APEX_ITEM.TEXT(2,detail_column) end "ALIAS" from detail table
    Hope that help.
    Vivek

  • JTable (dynamic columns)

    Well guys, voil� my problem...
    I've a Person class, who has some methods to get the person information, like getName(), getAge(), getAdresse(), etc... I would display the information of all the persons in the diary in a JTable... Ok, it's all right, i made a class who extends AbstractModelTable, overriding the getValueAt(int, int) with a switch:
    // private static final int COLUMN_NAME = 0;
    // private static final int COLUMN_NAME = 1;
    switch (column) {
            case COLUMN_NAME:
                  return cols[rowIndex].getName();
             case COLUMN_AGE:
                   return cols[rowIndex].getAge();
              default:
                    return;
    }The code it's something like that... I'm sorry i don't show the code, i've not the source here!
    It works very fine!... But now, i want to let the user choose witch columns to display...
    I made a lot of tries, but i could not get the solution... The only one thing I could, was to eliminate the columns with zero value in the conf file, but the headers were not in the correct order!... And there's another problem too, when I switch the columnIndex, if it equals to COLUMN_EMAIL = 15 means that JTree is getting the value of the 15th column, but if the user had removed the 2 column for example, the 15th column is not more the email column, it's the 15+1 columns :S... is it clair? I think it's a little difficult to explain, and as you see, i don't speak english very well :P...
    Summary: I would create a class extending JTable with columns configurables, i mean, let the user choose witch columns should be showed... Any idea ?... I can avoid the JTable component, so If you've another solution, it will be ok...
    Greetings and thank you guys...

    Your requirement is very general so we can't give you an exact solution, but I can try explaining how JTable works.
    The TableModel is used to store the data. The JTable is used to display the data. When a table is first created using a TableModel a TableColumnModel is created. Each TableColumn in the TableColumnModel maps directly to a column in the TableModel.
    Now what happens if the user moves column 15 to the first column in the table? The data hasn't changed, only the view of the data has changed. So even though the column is in column 0 of the table, the data must still come from column 15 in the TableModel. The TableColumns of the TableColumnModel do the mapping for you so you don't need to worry about the reordering of columns.
    However, if you have some code in your program that accesses the data directly, then you need to be aware of this situation. Fortunately JTable has some methods to make this mapping easy.
    table.getValueAt(...) will get data from the requested column in the view of the table
    table.getModel().getValueAt(...) will get data form the requested column in the TableModel.
    You can also do the mapping between "view" and "model" columns using the methods:
    table.convertColumnIndexToModel(...)
    table.convertColumnIndexToView(...) So what does this mean with dynamic columns? Well, you would build your table normally, then you would remove the TableColumns from the TableColumnModel that the user does not want to see.
    The following example is so code I wrote a while ago that will help in manipulating the TableColumnModel. Right click on the TableHeader to see the visible/hidden status of each column:
    import java.awt.*;
    import java.util.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;
    public class TableColumnManager implements MouseListener, ActionListener
         private static final String HIDDEN_COLUMN = "HiddenColumn:";
         //  Reference to the Singleton instance of this class
         private static TableColumnManager singleton;
         *  Use a private constructor so we can create a Singleton.
         private TableColumnManager()
         *  Get the Singleton instance of the <code>TableColumnManager</code>.
         *  @return  the Singlton instance of <code>TableColumnManager</code>
         private static TableColumnManager getInstance()
              if (singleton == null)
                   singleton = new TableColumnManager();
              return singleton;
         *  Add support for the management of visible <code>TableColumns</code>
         *  for a given <code>JTable</code>.
         *  @param  table the table to provide support for
         public static void install(JTable table)
              table.getTableHeader().addMouseListener( getInstance() );
         *  Remove support for the management of visible <code>TableColumns</code>
         *  for a given <code>JTable</code>.
         *  @param  table the table to remove support from
         public static void uninstall(JTable table)
              table.getTableHeader().removeMouseListener( getInstance() );
         *  Hide a column from view in the table.
         *  @param  table        the table from which the column is removed
         *  @param  modelColumn  the column index from the TableModel
         *                       of the column to be removed
         public static void hideColumn(JTable table, int modelColumn)
              int viewColumn = table.convertColumnIndexToView( modelColumn );
              if (viewColumn != -1)
                   TableColumn column = table.getColumnModel().getColumn(viewColumn);
                   hideColumn(table, column);
         *  Hide a column from view in the table.
         *  @param  table        the table from which the column is removed
         *  @param  columnName   the column name of the column to be removed
         public static void hideColumn(JTable table, String columnName)
              try
                   TableColumnModel tcm = table.getColumnModel();
                   int index = tcm.getColumnIndex( columnName );
                   TableColumn column = tcm.getColumn( index );
                   hideColumn(table, column);
              catch(IllegalArgumentException e) {}
         *  Hide a column from view in the table.
         *  @param  table   the table from which the column is removed
         *  @param  column  the TableColumn to be removed from the
         *                  TableColumnModel of the specified table
         public static void hideColumn(JTable table, TableColumn column)
              table.getColumnModel().removeColumn( column );
              //  Save the column so it can be redisplayed
              ArrayList list = (ArrayList)table.getClientProperty(HIDDEN_COLUMN);
              if (list == null)
                   list = new ArrayList();
                   table.putClientProperty(HIDDEN_COLUMN, list);
              list.add(column);
         *  Show a hidden column in the table.
         *  @param  table        the table to which the column is added
         *  @param  modelColumn  the column index from the <code>TableModel</code>
         *                       of the column to be added
         public static void showColumn(JTable table, int modelColumn)
              ArrayList list = (ArrayList)table.getClientProperty(HIDDEN_COLUMN);
              if (list == null) return;
              ListIterator it = list.listIterator();
              while (it.hasNext())
                   TableColumn column = (TableColumn)it.next();
                   if (column.getModelIndex() == modelColumn)
                        table.getColumnModel().addColumn( column );
                        it.remove();
                        break;
         *  Show a hidden column in the table.
         *  @param  table        the table to which the column is added
         *  @param  columnName   the column name from the <code>TableModel</code>
         *                       of the column to be added
         public static void showColumn(JTable table, String columnName)
              ArrayList list = (ArrayList)table.getClientProperty(HIDDEN_COLUMN);
              if (list == null) return;
              ListIterator it = list.listIterator();
              while (it.hasNext())
                   TableColumn column = (TableColumn)it.next();
                   if (column.getHeaderValue().equals(columnName))
                        table.getColumnModel().addColumn( column );
                        it.remove();
                        break;
         //  Implement the MouseListener
         public void mousePressed(MouseEvent e)
              checkForPopup( e );
         public void mouseReleased(MouseEvent e)
              checkForPopup( e );
         public void mouseClicked(MouseEvent e) {}
         public void mouseEntered(MouseEvent e) {}
         public void mouseExited(MouseEvent e) {}
         private void checkForPopup(MouseEvent e)
              if (e.isPopupTrigger())
                   JTableHeader header = (JTableHeader)e.getComponent();
                   int column = header.columnAtPoint( e.getPoint() );
                   showPopup(header.getTable(), column);
         *  Show a hidden column in the table.
         *  @param  table        the table to which the column is added
         *  @param  columnName   the column name from the <code>TableModel</code>
         *                       of the column to be added
         public static void showPopup(JTable table, int tableColumn)
              int columns = table.getModel().getColumnCount();
              JCheckBoxMenuItem[] items = new JCheckBoxMenuItem[columns];
              //  Create menu items for hidden columns
                 ArrayList list = (ArrayList)table.getClientProperty(HIDDEN_COLUMN);
                 if (list != null)
                   ListIterator it = list.listIterator();
                   while (it.hasNext())
                        TableColumn column = (TableColumn)it.next();
                        String columnName = column.getHeaderValue().toString();
                        JCheckBoxMenuItem item = new JCheckBoxMenuItem( columnName );
                        item.setSelected( false );
                        item.addActionListener(getInstance());
                        items[column.getModelIndex()] = item;
              //  Create menu items for visible columns
              TableColumnModel columnModel = table.getColumnModel();
              int columnCount = columnModel.getColumnCount();
              for (int i = 0; i < columnCount; i++)
                   TableColumn column = columnModel.getColumn(i);
                   String columnName = column.getHeaderValue().toString();
                   JCheckBoxMenuItem item = new JCheckBoxMenuItem( columnName );
                   item.setSelected( true );
                   item.addActionListener(getInstance());
                   items[column.getModelIndex()] = item;
              //  Create popup menu from array of menu items.
              //  Override the setSelected method to select the
              //  specified menu item. (ie. this is a bug fix)
              JPopupMenu popup = new JPopupMenu()
                   public void setSelected(Component sel)
                        int index = getComponentIndex( sel );
                        getSelectionModel().setSelectedIndex(index);
                        final MenuElement me[] = new MenuElement[2];
                        me[0]=(MenuElement)this;
                        me[1]=getSubElements()[index];
                        SwingUtilities.invokeLater(new Runnable()
                             public void run()
                                  MenuSelectionManager.defaultManager()
                                       .setSelectedPath(me);
              for (int i = 0; i < items.length; i++)
                   if (items[i] != null)
                        popup.add( items[i] );
              //  Display the popup below the TableHeader
              JTableHeader header = table.getTableHeader();
              Rectangle r = header.getHeaderRect( tableColumn );
              popup.show(header, r.x, r.height);
              int modelColumn = table.convertColumnIndexToModel( tableColumn );
              popup.setSelected( items[modelColumn] );
         *  Responsible for processing the ActionEvent. A column will either be
         *  added to the table or removed from the table depending on the state
         *  of the menu item that was clicked.
         * @param event the ActionEvent.
         public void actionPerformed(ActionEvent event)
              JMenuItem item = (JMenuItem)event.getSource();
              JPopupMenu popup = (JPopupMenu)item.getParent();
              JTableHeader header = (JTableHeader)popup.getInvoker();
              JTable table = header.getTable();
              if (item.isSelected())
                   showColumn(table, item.getText());
              else
                   hideColumn(table, item.getText());
         public static void main(String[] args)
              JTable table = new JTable( new DefaultTableModel(5, 10) );
              TableColumnManager.install(table);
              TableColumnManager.hideColumn(table, 2);
              TableColumnManager.hideColumn(table, "E");
              JFrame frame = new JFrame();
              frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
              frame.getContentPane().add( new JScrollPane(table) );
              frame.pack();
              frame.setVisible( true );
    }Hopefully I've made some sense.

  • Table Sorting based on Column Selection

    Dear All,
    I am using an AbstractTableModel. I would like to implement the sorting based on Column selection. Could anyone help me in this please.
    Thanks in advance,
    Regards
    Irfaan

    check this
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.UIManager;
    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.TableCellRenderer;
    import javax.swing.table.TableColumnModel;
    import java.awt.Component;
    import java.awt.GridLayout;
    import java.awt.Insets;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.util.Hashtable;
    public class TableSorter extends JPanel
        private boolean             DEBUG       = false;
        private Object[]            columnNames = { "First Name", "Last Name", "Sport", "# of Years",
                                                    "Vegetarian"};
        private Object[][]          data        = { { "Mary", "Campione", "Snowboarding", 1, 2 },
                { "Alison", "Huml", "Rowing", 3, 4 }, { "Kathy", "Walrath", "Knitting", 5, 9 },
                { "Sharon", "Zakhour", "Speed reading", 6, 10 }, { "Philip", "Milne", "Pool", 7, 11 },
                { "Isaac", "Rabinovitch", "Nitpicking", 8, 12 }, };
        private SortFilterModel     m_modSortFilterModel;
        private TableColumnModel    m_modColumnModel;
        private TableHeaderRenderer m_btnSorterRenderer;
        protected boolean           m_bAbCOC    = true;
        JTable                      table       = new JTable();
        public TableSorter()
            super(new GridLayout(1, 0));
            m_modSortFilterModel = new SortFilterModel();
            m_modSortFilterModel.addMouseListener(table);
            table.setModel(m_modSortFilterModel);
            m_btnSorterRenderer = new TableHeaderRenderer();
            m_modColumnModel = table.getColumnModel();
            for (int i = 0; i < columnNames.length; i++)
                m_modColumnModel.getColumn(i).setHeaderRenderer(m_btnSorterRenderer);
            JScrollPane scrollPane = new JScrollPane(table);
            add(scrollPane);
        private class SortFilterModel extends AbstractTableModel
            int[]           indexes;
            ATSTableSorter  sorter;
            public String[] tableHeadersArray;
            boolean         isAscent = true;
            public void addMouseListener(final JTable table)
                table.getTableHeader().addMouseListener(new MouseAdapter()
                    public void mouseClicked(MouseEvent event)
                        int tableColumn = table.columnAtPoint(event.getPoint());
                        m_btnSorterRenderer.setPressedColumn(tableColumn);
                        m_btnSorterRenderer.setSelectedColumn(tableColumn);
                        if (TableHeaderRenderer.DOWN == m_btnSorterRenderer.getState(tableColumn))
                            isAscent = true;
                        else
                            isAscent = false;
                        // translate to table model index and sort
                        int modelColumn = table.convertColumnIndexToModel(tableColumn);
                        sortByColumn(modelColumn, isAscent);
            public Object getValueAt(int row, int col)
                int rowIndex = row;
                if (indexes != null)
                    rowIndex = indexes[row];
                return data[rowIndex][col];
            public void setValueAt(Object value, int row, int col)
                int rowIndex = row;
                if (indexes != null)
                    rowIndex = indexes[row];
                super.setValueAt(value, rowIndex, col);
            public void sortByColumn(int column, boolean isAscent)
                if (sorter == null)
                    sorter = new ATSTableSorter(this);
                sorter.sort(column, isAscent);
                fireTableDataChanged();
            public int[] getIndexes()
                int n = getRowCount();
                if (indexes != null)
                    if (indexes.length == n)
                        return indexes;
                indexes = new int[n];
                for (int i = 0; i < n; i++)
                    indexes[i] = i;
                return indexes;
            public int getRowCount()
                return data.length;
            public String getColumnName(int c)
                return columnNames[c].toString();
            public int getColumnCount()
                return columnNames.length;
            public Class getColumnClass(int col)
                switch (col)
                case 0:
                    return String.class;
                case 1:
                    return String.class;
                case 2:
                    return String.class;
                case 3:
                    return Integer.class;
                case 4:
                    return Integer.class;
                          default:
                    return Object.class;
        class ATSTableSorter
            SortFilterModel model;
            public ATSTableSorter(SortFilterModel model)
                this.model = model;
            public void sort(int column, boolean isAscent)
                int n = model.getRowCount();
                int[] indexes = model.getIndexes();
                for (int i = 0; i < n - 1; i++)
                    int k = i;
                    for (int j = i + 1; j < n; j++)
                        if (isAscent)
                            if (compare(column, j, k) < 0)
                                k = j;
                        else
                            if (compare(column, j, k) > 0)
                                k = j;
                    int tmp = indexes;
    indexes[i] = indexes[k];
    indexes[k] = tmp;
    public int compare(int column, int row1, int row2)
    Object o1 = model.getValueAt(row1, column);
    Object o2 = model.getValueAt(row2, column);
    if (o1 == null && o2 == null)
    return 0;
    else if (o1 == null)
    return -1;
    else if (o2 == null)
    return 1;
    else
    Class type = model.getColumnClass(column);
    if (type.getSuperclass() == Number.class)
    return compare((Number) o1, (Number) o2);
    else if (type == String.class)
    return ((String) o1).compareTo((String) o2);
    else
    return ((String) o1).compareTo((String) o2);
    public int compare(Number o1, Number o2)
    double n1 = o1.doubleValue();
    double n2 = o2.doubleValue();
    if (n1 < n2)
    return -1;
    else if (n1 > n2)
    return 1;
    else
    return 0;
    class TableHeaderRenderer extends JButton implements TableCellRenderer
    public static final int NONE = 0;
    public static final int DOWN = 1;
    public static final int UP = 2;
    int pushedColumn;
    Hashtable state;
    public TableHeaderRenderer()
    pushedColumn = -1;
    state = new Hashtable();
    setMargin(new Insets(0, 0, 0, 0));
    setHorizontalTextPosition(LEFT);
    public Component getTableCellRendererComponent(JTable table, Object value,
    boolean isSelected, boolean hasFocus,
    int row, int column)
    setText((value == null) ? "" : value.toString());
    setBorder(UIManager.getBorder("TableHeader.cellBorder"));
    boolean isPressed = (column == pushedColumn);
    getModel().setPressed(isPressed);
    getModel().setArmed(isPressed);
    return this;
    public void setPressedColumn(int col)
    pushedColumn = col;
    public void setSelectedColumn(int col)
    if (col < 0)
    return;
    Integer value = null;
    Object obj = state.get(new Integer(col));
    if (obj == null)
    value = new Integer(DOWN);
    else
    if (((Integer) obj).intValue() == DOWN)
    value = new Integer(UP);
    else
    value = new Integer(DOWN);
    state.clear();
    state.put(new Integer(col), value);
    public int getState(int col)
    int retValue;
    Object obj = state.get(new Integer(col));
    if (obj == null)
    retValue = NONE;
    else
    if (((Integer) obj).intValue() == DOWN)
    retValue = DOWN;
    else
    retValue = UP;
    return retValue;
    private static void createAndShowGUI()
    JFrame frame = new JFrame("TableDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    TableSorter newContentPane = new TableSorter();
    newContentPane.setOpaque(true); // content panes must be opaque
    frame.setContentPane(newContentPane);
    frame.pack();
    frame.setVisible(true);
    public static void main(String[] args)
    javax.swing.SwingUtilities.invokeLater(new Runnable()
    public void run()
    createAndShowGUI();

  • Enable/Disable Column in a Advanced Bean Table

    Hi,
    I have 2 columns that needs to be enabled/disabled on a standard oa page PO Lines summary page.
    I went through couple of blogs/forums and found 2 approaches :-
    Approach 1
    1) Extended the standard VO POLinesMerge.
    2) Added a attribute column DeriveDisplayFlag of type VARCHAR2 . This call a database function and will return Y or N
    3) Added a attribute of type ShowAdditionalColumn boolean. the get method of this attribute returns TRUE if DeriveDisplayFlag is 'Y' otherwise returns FALSE.
    4) created a substitution for the custom VO
    5) uploaded the substitution to mds.
    6) copied the xml/class files to $JAVA_TOP/..
    7) Bounced entire middle tier
    8) using personalization, entered a SPEL command on the rendered property. I know rendered will hide/show the column but for time being I just want this to work.
    But this fails :-
    oracle.apps.fnd.framework.OAException: Message not found. Application: FND, Message Name: FND_VIEWOBJECT_NOT_FOUND. Tokens: VONAME = XXPBPoLinesMergeVO; APPLICATION_MODULE = oracle.apps.po.document.server.DocumentAM;
    I am not aware how to get around this. Can someone help please?
    Approach 2
    1) steps 1 to 6 from Approach 1.
    2) trying to extend controller class OrderLinesTableRNCO. But have couple of questions. This iis a advanced bean table so how should i reference individual record and the column that i need to disable/enable ?
    Conceptual questions
    Also, when i am entering a new record at what point in time the 2 new attribute will derive its value? the 2 attributes are dependent on the Item number column but i have not created a dependency between the attributes and Item# column.
    Will the controller logic fire for every column while i am entering a new record?
    Thanks.

    Hi Anil,
    Thanks for the response. I have given up that i will get reply on this post.
    I have done the substitution and upload the jpx to umsing importer.
    But you are correct may be i might have done something wrong. Can you please help me. I can send you the files if you can review and let me know it will be great.
    Also, will this approach work since PO Lines is a advanced bean table ?
    One of the experts suggested to use Bound values. I am not sure how to implement it though?
    I have went and told back to my business team that I am not able to do this so now they have asked me to enable/disable columns based on a dff value on po header. I thought this will be easier by extending the controller class on PO Lines table but that too is not working.
    Can you help me please ?
    Here is my code to extend the controller class :-
    package xxpb.oracle.apps.po.webui;
    import oracle.apps.fnd.common.VersionInfo;
    import oracle.apps.fnd.framework.webui.OAControllerImpl;
    import oracle.apps.fnd.framework.webui.OAPageContext;
    import oracle.apps.fnd.framework.webui.beans.OAWebBean;
    import oracle.apps.fnd.framework.webui.beans.message.OAMessageLovInputBean;
    import oracle.apps.fnd.framework.webui.beans.message.OAMessageTextInputBean;
    import oracle.apps.fnd.framework.webui.beans.table.OAAdvancedTableBean;
    import oracle.apps.fnd.framework.webui.beans.table.OAColumnBean;
    import oracle.apps.fnd.framework.webui.beans.table.OASortableHeaderBean;
    import oracle.apps.fnd.framework.webui.beans.table.OATableBean;
    import oracle.apps.po.document.order.webui.OrderLinesTableRNCO;
    public class XXPBOrderLinesTableRNCO extends OrderLinesTableRNCO
    public void processRequest(OAPageContext pageContext, OAWebBean webBean)
    super.processRequest(pageContext, webBean);
    OAAdvancedTableBean tableBean =
    (OAAdvancedTableBean)webBean.findIndexedChildRecursive("LinesTableRN");
    OAMessageLovInputBean poLineLov =
    (OAMessageLovInputBean)tableBean.findIndexedChildRecursive("XXPBSecondaryUOMLOV");
    poLineLov.setDisabled(false);
    }

  • Disable column in tabular form

    Hi,
    I am working on apex4.1 ,working on tabular form . i want to disable columns in tabular form.
    I Have debit and credit column in tabular form.These columns are multiply by exchange rate.
    if i have multiplication of Debit_prod =debit*Exchange_rate then
    credit column should be disable, and if Multiplication of cr_prod =Credit*Exchange_rate
    then dr column should be disable.
    Thanks in advance.
    Thanks & Regards
    Vedant
    Edited by: Vedant on Sep 20, 2012 4:14 AM

    Hi,
    Thanks for reply.
    I am entering the value in tabular form. As i fill debit or credit column of the tabular form,Then if value in the debit column i have entered ,then on press tab control switch to exchange rate column , credit column should not be enterable and vice versa.
    Thanks & Regards
    Vedant

  • How to create a dynamic RTF report which creates dynamic columns based on dynamic column selection from a table?

    Hi All,
    Suppose I have table, whose structure changes frequently on daily basis.
    For eg. desc my_table gives you following column name on Day 1
    SQL > desc my_table;
    Output
    Name
    Age
    Phone
    On Day 2, two more columns are added, viz, Address and Salary.
    SQL > desc my_table;
    Output
    Name
    Age
    Phone
    Address
    Salary
    Now I want to create an Dynnamic RTF report which would fetch data from ALL columns from my_table on daily basis. For that I have defined a concurrent program with XML as output type and have attached a data template/data definition to it which takes in XML as input and gives final output of conc program in EXCEL layout. I am able to do this for constant number of columns, but dont know how to do it when the number of columns to be displayed changes dynamically.
    For Day 1 my XML file should be like this.
    <?xml version="1.0" encoding="UTF-8"?>
    <dataTemplate name="XYZ" description="iExpenses Report" Version="1.0">
    <dataQuery>
    <sqlStatement name="Q2">
    <![CDATA[
    SELECT Name
    ,Age
    ,Phone
    FROM my_table
    ]]>
    </sqlStatement>
    </dataQuery>
    <dataStructure>
    <group name="G_my_table" source="Q2">
      <element name="Name" value="Name" />
      <element name="Age" value="Age" />
      <element name="Phone" value="Phone" />
    </group>
    </dataStructure>
    </dataTemplate>
    And my Day 1, EXCEL output from RTF template should be like this.
    Name     Age     Phone
    Swapnill     23     12345
    For Day 2 my XML file should be like this. With 2 new columns selected in SELECT clause.
    <?xml version="1.0" encoding="UTF-8"?>
    <dataTemplate name="XYZ" description="iExpenses Report" Version="1.0">
    <dataQuery>
    <sqlStatement name="Q2">
    <![CDATA[
    SELECT Name
    ,Age
    ,Phone
    ,Address
    ,Salary
    FROM my_table
    ]]>
    </sqlStatement>
    </dataQuery>
    <dataStructure>
    <group name="G_my_table" source="Q2">
      <element name="Name" value="Name" />
      <element name="Age" value="Age" />
      <element name="Phone" value="Phone" />
      <element name="Address" value="Address" />
      <element name="Salary" value="Salary" />
    </group>
    </dataStructure>
    </dataTemplate>
    And my Day 2, EXCEL output from RTF template should be like this.
    Name     Age     Phone     Address     Salary
    Swapnill     23     12345         Madrid     100000
    Now, I dont know below things.
    Make the XML dynamic as in on Day 1 there must be 3 columns in the SELECT statement and on Day 2, 5 columns. I want to create one dynamic XML which should not be required to be changed if new columns are added in my_table. I dont know how to create this query and also create their corresponding elements below.
    Make the RTF template dyanamic as in Day1 there must 3 columns in EXCEL output and on Day 2, 5 columns. I want to create a Dynamic RTF template which would show all the columns selected in Dynamic XML.I dont know how the RTF will create new XML tags and how it will know where to place it in the report. Means, I can create RTF template on Day 1, by loading XML data for 3 columns and placing 3 XML tags in template. But how will it create and place tags for new columns on Day 2?
    Hope, you got my requirement, its a challenging one. Please let me know how I can implement the required solution using RTF dynamically without any manual intervention.
    Regards,
    Swapnil K.
    Message was edited by: SwapnilK

    Hi All,
    I am able to fulfil above requirement. Now I am stuck at below point. Need your help!
    Is there any way to UPDATE the XML file attached to a Data Definition (XML Publisher > Data Definition) using a standard package or procedure call or may be an API from backend? I am creating an XML dynamically and I want to attach it to its Data Definition programmatically using SQL.
    Please let me know if there is any oracle functionality to do this.
    If not, please let me know the standard directories on application/database server where the XML files attached to Data Definitions are stored.
    For eg, /$APPL_TOP/ar/1.0/sql or something.
    Regards,
    Swapnil K.

  • How to disable the selection of "Title and logo URL of a SharePoint 2013 site" from browser

    how to disable the selection of "Title and logo URL of a SharePoint 2013 site" from browser or How can we able to set our custom default log to the sp2013 site using code.So that users are not allowed to change from browser again.
    Thanks &amp; Regards, Krishna

    Hi  Krishna,
    For your issue, you need to deploy a farm solution using HideCustomAction to hide site settings link. For example to hide “Title, description, and logo” link you can use below code:
    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <HideCustomAction
    GroupId="Customization"
    HideActionId = "ProjectSettings"
    Location = "Microsoft.SharePoint.SiteSettings">
    </HideCustomAction>
    </Elements>
    Reference:
    http://social.msdn.microsoft.com/Forums/sharepoint/en-US/92f002b7-0e9c-424e-836a-de40c4e5d81f/hide-option-from-site-settings-page-in-sharepoint-2010?forum=sharepointdevelopmentprevious
    http://blog.milanchauhan.com/2013/06/add-custom-section-in-site-settings.html
    Best Regards,
    Eric
    Eric Tao
    TechNet Community Support

  • How do i change the color of a JTable's column names

    hai,
    i'm very new to java and trying to customize the look of a JTable.
    how do i change the color of a JTable's Column names. i know its very simple, i just couldn't figure out how to do it!!
    thanx in advance

    table.getTableHeader().setForeground(Color.RED);

  • How to generate a second csv file with different report columns selected?

    Hi. Everybody:
    How to generate a second csv file with different report columns selected?
    The first csv file is easy (report attributes -> report export -> enable CSV output Yes). However, our users demand 2 csv files with different report columns selected to meet their different needs.
    (The users don't want to have one csv file with all report columns included. They just want to get whatever they need directly, no extra columns)
    Thank you for any help!
    MZ

    Hello,
    I'm doing it usually. Typically example would be in the report only the column "FIRST_NAME" and "LAST_NAME" displayed whereas
    in the csv exported with the UTL_FILE the complete address (street, housenumber, additions, zip, town, state ... ) is written, these things are needed e.g. the form letters.
    You do not need another page, just an additional button named e.g. "export_to_csv" on your report page.
    The csv export itself is handled from a plsql procedure "stored procedure" ( I like to have business logic outside of apex) which is invoked by pressing the button "export_to_csv". Of course the stored procedure can handle also parameters
    An example code would be something like
    PROCEDURE srn_brief_mitglieder (
         p_start_mg_nr IN NUMBER,
         p_ende_mg_nr IN NUMBER
    AS
    export_file          UTL_FILE.FILE_TYPE;
    l_line               VARCHAR2(20000);
    l_lfd               NUMBER;
    l_dateiname          VARCHAR2(100);
    l_datum               VARCHAR2(20);
    l_hilfe               VARCHAR2(20);
    CURSOR c1 IS
    SELECT
    MG_NR
    ,TO_CHAR(MG_BEITRITT,'dd.mm.yyyy') AS MG_BEITRITT ,TO_CHAR(MG_AUFNAHME,'dd.mm.yyyy') AS MG_AUFNAHME
    ,MG_ANREDE ,MG_TITEL ,MG_NACHNAME ,MG_VORNAME
    ,MG_STRASSE ,MG_HNR ,MG_ZUSATZ ,MG_PLZ ,MG_ORT
    FROM MITGLIEDER
    WHERE MG_NR >= p_start_mg_nr
    AND MG_NR <= p_ende_mg_nr
    --WHERE ROWNUM < 10
    ORDER BY MG_NR;
    BEGIN
    SELECT TO_CHAR(SYSDATE, 'yyyy_mm_dd' ) INTO l_datum FROM DUAL;
    SELECT TO_CHAR(SYSDATE, 'hh24miss' ) INTO l_hilfe FROM DUAL;
    l_datum := l_datum||'_'||l_hilfe;
    --DBMS_OUTPUT.PUT_LINE ( l_datum);
    l_dateiname := 'SRNBRIEF_MITGLIEDER_'||l_datum||'.CSV';
    --DBMS_OUTPUT.PUT_LINE ( l_dateiname);
    export_file := UTL_FILE.FOPEN('EXPORTDIR', l_dateiname, 'W');
    l_line := '';
    --HEADER
    l_line := '"NR"|"BEITRITT"|"AUFNAHME"|"ANREDE"|"TITEL"|"NACHNAME"|"VORNAME"';
    l_line := l_line||'|"STRASSE"|"HNR"|"ZUSATZ"|"PLZ"|"ORT"';
         UTL_FILE.PUT_LINE(export_file, l_line);
    FOR rec IN c1
    LOOP
         l_line :=  '"'||rec.MG_NR||'"';     
         l_line := l_line||'|"'||rec.MG_BEITRITT||'"|"' ||rec.MG_AUFNAHME||'"';
         l_line := l_line||'|"'||rec.MG_ANREDE||'"|"'||rec.MG_TITEL||'"|"'||rec.MG_NACHNAME||'"|"'||rec.MG_VORNAME||'"';     
         l_line := l_line||'|"'||rec.MG_STRASSE||'"|"'||rec.MG_HNR||'"|"'||rec.MG_ZUSATZ||'"|"'||rec.MG_PLZ||'"|"'||rec.MG_ORT||'"';          
    --     DBMS_OUTPUT.PUT_LINE (l_line);
    -- in datei schreiben
         UTL_FILE.PUT_LINE(export_file, l_line);
    END LOOP;
    UTL_FILE.FCLOSE(export_file);
    END srn_brief_mitglieder;Edited by: wucis on Nov 6, 2011 9:09 AM

Maybe you are looking for

  • HDMI out from Timeline

    Hi, I am doing a job for an Art Gallery, in which I have to shoot, and do a quick edit (no effects), and output to a Full HD 1920x1080 TV. I intend to buy a Panasonic AG-HMC70U Shoulder Mounted Camcorder, which stores AVCHD 1080/60i (NTSC) video in S

  • Output Error in Yearly Report

    Hello friends i need to show the following output in a query please advise : Net Post---- Per1....Per2....Per3....Per4--so on.......Diff.....% Change Post1 ---Post2 Post3 Year1................x.......x.......x......x........ Year2................x...

  • What is the best way to implement a cluster-wide object ID generator?

    What is the best way to implement a cluster-wide object ID generator?

  • Fetch records condition in BI

    Hi, i have one question BI publisher, I have to fetch conditions met records only in the report. i want only records which are type is Incident and Status is Closed or Resolved Records only. If other than these it should not display or bring in my BI

  • Create both onscreen and database storage JSP application

    Hi, My JSP application is a JSP form with name, address, phone number, etc. and a submit button. The output currently shows onscreen with no database connection. Can someone please tell me how I store this in the Oracle database and would it be possi