Controls lose data binding when added to cluster

Please forgive me if this is a newbie question, but I can't seem to find an answer.
In a nutshell, I have an array (constant) of strings and a cluster of booleans.  I want to search the name of each boolean in the cluster for a match to a string in the array and perform an action for each match.  Say I want to turn on all booleans that match.
The problem is that the booleans are bound by datasocket - to OPC server to PLC.  So when I add a boolean to the cluster, the data binding is dropped.  Attempts to reassign data binding are unsuccessful.  If I move the control outside the cluster and reassign data binding, it works.  There are a fair number of booleans so I want to avoid wiring them one by one.
I am using LabVIEW 8.6 and there is a known bug similar to this for arrays of fixed size.  However I don't totally understand the solution and how I would apply it to a cluster:  "Uncheck autopreallocate arrays and strings in the VI properties execution category for all VIs not intended to run on an FPGA."  There is no listing for clusters.  Could I be doing something wrong?  Should I be using shared variables instead of data binding?
3OLE2573
Return
DataSocket and Fixed Size Array Do Not Work
You cannot use front panel DataSocket data binding with fixed-sized arrays.
Workaround: Uncheck autopreallocate arrays and strings in the VI properties execution category for all VIs not intended to run on an FPGA.
Message Edited by Katelyn on 08-18-2009 12:14 PM

Peter,
Thanks. i will separate this in 3 questions.
I posted the whole thing, so people could copy the code on
Flex and tested to see what I am talking about.
"evt.target.selectedItem should be a <module> element.
Is that not happening?"
Yes, when loading is a module. Once a click on a list item I
get the following error:
TypeError: Error #1009: Cannot access a property or method of
a null object reference.
at SPADE2/::changeHandler()
at SPADE2/__cList1_change()
at
flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()
at
mx.controls.listClasses::ListBase/mx.controls.listClasses:ListBase::mouseUpHandler()
at mx.controls::List/mx.controls:List::mouseUpHandler()
If a click dismiss all, I can click on the tabs and the
content on the list changes as expected, but when clicking on the
list items, they don't work.
If a click on the video tab the state changes, but I have to
click on the list twice to play a video. After that I the list
items for the other tabs work.
Gilbert

Similar Messages

  • Imovie loses date code when moving library

    I have years of taped video that I have imported without a date code and I have manually added the correct date within iMovie.
    To save space I have now moved these files within iMovie to an external drive.  All appears fine at first, the Event Library has all the correct dates on the new drive.  However, when iMovie is closed and then reopened, it loses all the manually added dates, and I have one event for the date the files were imported from tape.
    I have searched a lot of forums but have not found an answer.  I could just do all that manually work again on the new drive, but there must be an easier way.
    Would upgrading to iLife11 help?

    I tried copy and delete in finder, but iMovie lost track of the files completely, perhaps you meant copy within iMovie, I'll try that later.
    I just downloaded a free trial of Final Cut Pro X, and imported Imovie events.  Again, this completely ignored all the time and date data added manually in iMovie.  If it's a bug it I would have thought a few more people might have come across it.
    Cheers

  • Controlling the timeout period when synchonizing with cluster

    I see a message when my server starts up:
              "Waiting to synchronize with other running members of MyCluster."
              When the other servers in the cluster aren't up, the server waits to time out before continuing with startup (default 30 seconds or so?). Is there a way to control the timeout period?
              Thanks,
              Jim

    This can be specified in the console under:
              Environment -> Clusters -> "MyCluster"
              You have to click the "Advanced" link to get access to the advanced cluster settings. The name of the property is: "Member Warmup Timeout".
              If you would like to change it programatically, the relevant MBean attribute is : "ClusterMBean.MemberWarmupTimeSeconds"

  • SAP GRC 10.1 AMF No data selected when adding duplicate fields from separate tables for configurable data sources

    Hi There,
    In SAP GRC 10.0, our team had an issue where we could not add duplicate fields from separate table (see ERROR: Select Currency/UoM field for the selected analyzed fields). This was resolved by the SAP Note 1904313/ 1904314 (http://service.sap.com/sap/support/notes/1904313).
    We upgraded our system to SAP GRC 10.1 SP05 and could now add the duplicate fields from separate tables. SAP Note 1904313/ 1904314 was part of SAP GRC 10.1 SP03 so it makes sense that we, in a higher version (SP05), would be able to do this.
    The issue now is when we add the duplicate fields from different tables and run the Ad-hoc Query to test if the data source works correctly, the No Data Selected warning persists. This means that the data source provides no data for analysis, which is required to write our business rules.
    Below is an example:
    Basic data source with just one currency reference field EBAN-WAERS.
    When you run the Ad-Hoc Query you receive data.
    Basic data source with second currency reference field EKKO-WAERS.
    When you run the Ad-Hoc Query no data is found.
    Please also make reference to the following thread logged by my colleague (ERROR: Select Currency/UoM field for the selected analyzed fields)
    Any assistance to receive data with duplicate fields from separate tables will be highly appreciated.
    Thanking you in advance.
    Regards
    Gary Khan

    Hi
    following are the  error messages from dump
    hrtText
       There is already a line with the same key.
    hat happened?
       Error in ABAP application program.
       The current ABAP program "SAPLCKMS" had to be terminated because one of the
       statements could not be executed.
       This is probably due to an error in the ABAP program.
    rror analysis
       You wanted to add an entry to table "\FUNCTION-POOL=CKMS\DATA=T_DYN_CKMLCR",
        which you declared
       with a UNIQUE KEY. However, there was already an entry with the
       same key.
       This may have been in an INSERT or MOVE statement, or within a
       SELECT ... INTO statement.
       In particular, you cannot insert more than one initial line into a
       table with a unique key using the INSERT INITIAL LINE... statement.
    rigger Location of Runtime Error
       Program                                 SAPLCKMS
       Include                                 LCKMSF01
       Row                                     226
       Module type                             (FORM)
       Module Name                             DYNAMIC_PERIOD_CLOSING
    Source code where dump ocured
    222
    223           APPEND ht_ckmlpp TO t_add_ckmlpp.
    224           APPEND LINES OF ht_ckmlcr TO t_add_ckmlcr.
    225           INSERT ht_ckmlpp INTO TABLE t_dyn_ckmlpp.
    >>>>           INSERT LINES OF ht_ckmlcr INTO TABLE t_dyn_ckmlcr.
    227         ENDWHILE.
    Also I guess there is problem with material ledger in R/3 side
    I have never worked on material ledger before so dont hav idea of Tcode and tables in SAP R/3 for material ledger.
    Thanks
    Navneet

  • Will I lose data (photos) when I do a reset and no iCloud reservecopy was made recently?

    My iPad is stuck and only shows the message that no iCloud reservecopy was made for several weeks. Despite having enough storage, wifi and it being connected to the charger, it still hasn't made a copy. Now I'm thinking about a reset (pressing home and standby button simultaneously for ten secs.) but does that mean that I will lose the data (photos videos) that weren't copied to iCould? I know that similar questions have been asked and answered, but none (as fas as I can see) with the specific situation where no iCould copy was made.
    Many thanks in advance,
    Hans

    Try a reset:
    Hold the Sleep and Home button down (approximately 10 seconds) until you see the Apple logo.
    Note: Data will not be affected.

  • No data found when adding column link to classic report

    Hi,
    Oracle 11g r2, APEX 4.1.1.00.23.
    I have some classic reports.
    I go to Report Attributes, then I click Add Column Link in the "Tasks" right menu, it adds me a column link, I just add some text for the link and a page to go to.
    Then I run the report and I get :
    report error:
    ORA-01403: no data foundTested with several classic reports on multiple pages.
    Debug mode shows me :
    0.43816     0.00240     ...Execute Statement: select distinct [...] order by 3,11 ,4
    0.44056     0.00162     print column headings
    0.44218     0.04816     rows loop: 25 row(s)
    0.49037     0.00141     report error: ORA-01403: aucune donnée trouvée
    0.49175     0.00078     Computation point: After Box BodyWhen I run the query in my favorite tool, I get expected results.
    Did I missed something ?
    Thank you.
    Yann.

    Yann39 wrote:
    <font size="4">Is it an APEX bug ?</font>
    - Create a new Region of type Classic Report, then set Region source as :
    begin
    return test_return_query;
    end;- Run the page, the report works as expected
    - Go to Report Attributes and click Add Column Link (and just specify a text for the link and a page to go to).
    - Run the page, you should get the error !This might be unorthodox but try wrapping your returned query within an SQL statement, like so:
       begin
          return 'SELECT t.* FROM ('||test_return_query||') t';
       end;
    I can reproduce it on oracle.apex.com if needed...If my suggestion doesn't work, I think this might be the only option. You could create a new forum posting with the word "BUG" in the title, along with a link to this thread and the relevant workspace details (with guest developer credentials).

  • Controlling position of + and – when adding text size controls

    Dear gurus,
    I am trying to sort my text size controls (+ and –) and
    have managed to get them to resize but I can't get them to sit
    together. At the moment, visually it says
    Resize text then there is a big gap and there's the minus
    (–) then the plus (+) is pushed over onto the next line. I've
    tried my best but I simply don't have the knowledge to fix the
    problem.
    I have attached the code, see below (it may be full of
    mistakes so, don't laugh).
    Can you help and have I given you enough info?
    Thanks,
    Mark

    @dkg62 – to make clear what's going on, select the text frame and show us another screenshot.
    There are at least four cases where you can get a text like that. All cases imply, that the font you'd like to use is missing. I simulated this by formatting text with a font weight that is not available by a character style.
    1. The most likely case: There is baseline shift applied; here in my case 9pt.
    All other cases are academical, because the pink highlighting is aligned with the text:
    2. Text frame options, baseline set to a fixed value (zero in this case)
    3. Text on path and the text frame options (baseline) is just the standard default. You can see a second #-end of story sign inside the text frame.
    4. Text on path and the text frame options (baseline) is set to fixed (zero in this case). The second #-sign inside the text frame is shifted above because of the fixed value of the baseline option of the text frame options. And obscured by the pink highlighting.
    Uwe

  • Data Corruption when adding test steps in Tests Module

    This is a blocking issue. please see bug: https://bug.oraclecorp.com/pls/bug/webbug_edit.edit_info_top?rptno=14798197

    bug is fixed now in the latest build.

  • Dynamic table & data binding

    Hi all,
    I am trying to create an interactive form in WebDynpro ABAP (using Livecycle Designer 8.0).
    This application consists of two screens.
    I have a selection screen which populates an internal table in a context node.
    The next screen has the interactive form and should create the table dynamically to match the internal table.
    I can see the context on this screen as I inserted a simple WD table UI element and it displays the data.
    I created my form in the wizard here which allows you to set the interface to be a context node in the application. However the binding is not working at all. In fact when I set the binding attribute in the various subforms, rows etc I get a warning message
    "Using 'Normal' data binding when a default data connection is defined may produce undesirable results"
    Has anyone experienced this before or can anyone tell me how to set up a dynamic, bound table in WebDynpro ABAP?
    Thanks,
    Gregor

    Hi Gregor,
    From your information, I can say that you are having two Views. In the First View you have a selection screen and by the selection screen you are filling the Internal Table which is being used in the next View.
    To display the Internal in the Adobe Interactive Form from WebDynpro. Firstly you need to create a main context node and in that context node create another sub node with Cardinality "0..n" and Selection "0..1"and link that to a Table or Structure or leave that blank. i you left blank create attributes of your own or select from the table or structure you have referenced.
    Now in the Method you fill sub node after all the select statements written and at end write a code "sub_node_name->bind_table ( internal_table )".
    Now after filling the template source it asks for the interface, when filling select the main context node.
    I think this will solve your problem.
    Regards
    Pradeep Goli

  • Controlled Lookup Data (aka Reference Data)

    Controlled Lookup Data is when data is tightly coupled to the application. If the data is not there, you have problems. So how do we check to see if data is still there?
    The simplest way is to add a procValidate (Stored Procedure) to check
    that all the lookup data is still there.
    Have a nice day! :)

    Hi Deepankar,
    I'm sorry to correct you, but MDMGX does not send IDocs to MDM. MDMGX provides the customizing data in XML format. You can configure MDMGX either to send the XMLs directly to MDM's port folders via FTP or to download those files locally on your PC. MDMGX is only capable to extract customizing data for master data objects but not the object itsself.
    The output of MDM_CLNT_EXTR depends on the system it is running in. R/3 (ERP) systems use IDocs for message distribution via the systems ALE layer. These can be DEMDM, CREMDM, MATMAS, and so on if you use the standard SAP content, or any other customer defined IDoc type. These IDocs have usually an XML format, but they are not really XML documents. The transformation from IDoc to XML usually happens on XI.
    It' a bit different if you extract data from CRM or SRM systems. Those systems use an integrated Proxy implementation for message distribution. The messages sent to XI (or MDM) are already real XMLs.
    Additionally pleas enote that MDM_CLNT_EXTR is intended to be used for the extraction of Master Data Objects and not the related customizing data!
    BR Michael

  • Incorrect data type when writing to FPGA Read/Write Control

    I have run in to a problem this morning that is causing me substantial headache.  I am programming a CompactRIO chassis running in FPGA mode (not using the scan engine) with LabVIEW 2012.  I am using the FPGA Read/Write Control function to pass data from the RT Host to the FPGA Target.  The data the RT host is sending comes from a Windows host machine (acting as the UI) and is received by the RT Host through a network published variable.
    The network published shared variable (shared between the RT and Windows system) is a Type Def cluster containing several elements, one of which is a Type Def cluster of fixed point numerics.  The RT system reads this shared variable and breaks out the individual elements to pass along to various controls on the FPGA code's front panel.  The FPGA's front panel contains a type def cluster (the same type def cluster, actually) of fixed point numerics.
    The problem comes in the RT code.  After I read the shared variable I unbundle the cluster by name, exposing the sub-cluster of fixed point numerics.  I then drop an FPGA Read/Write Control on the RT block diagram and wire up the FPGA reference.  I left click on the FPGA Read/Write Control and select the cluster of fixed point numerics.  I wire these together and get a coercion dot.  Being a coercion dot hater, I hover over it the dot and see that the wire data type is correct (type def cluster of fixed point numerics), but the terminal data type is listed as a cluster containing a Boolean, code integer and source string, also known as an error cluster.  I delete the wire and check the terminal data type on the Read/Write Control, which is now correctly listed as a type def cluster of fixed point numerics.  Rewiring it causes the terminal to revert back to the error cluster.  I delete the wire again and right click on the terminal to add a control.  Sure enough, a type def cluster of fixed point numerics appears.  Right clicking and adding an indicator to the unbundle attached to the network shared variable produces the proper result.  So, until they are attached to each other, everything works fine.  When I wire these two nodes together, one spontaneously changes to a error cluster.
    Any thoughts would be appreciated.

    My apologies I never got back to responding on this.  I regret that now because I got it to work but never posted how.  I ran in to the exact same problem today and returned to this post to read the fix.  It wasn't there, so I had to go through it all over again.
    The manifestation of the problem this time was that I was now reading from the Read/Write FPGA front panel control and writing to a network published shared variable.  Both of these (the published shared variable and the front panel control) were based on a strict type defined cluster, just like in the original post.  In this instance, it was a completely different cluster in a completely different project, so it was not a one-off thing.
    In addition to getting the coercion dot (one instance becoming an error cluster, recall), LabVIEW would completely explode this time around.  If I saved the VI after changing type definition (I was adding to the cluster) I would get the following error:
    Compile error.  Report this problem to N.I. Tech Support.  Copy cvt,csrc=0xFF
    LabVIEW would then crash hard and shutdown without completing the save.  FYI, I'm running LabVIEW 12.0f3 32-bit.
    If I would then reopen the RT code, the same crash would occur immediately, ad nauseam.  The only way to get the RT code to open was to change the type defined cluster back to the way it was (prior to adding the new element).
    I didn't realize it last time around (what originally prompted this post), but I believe I was adding to a type def cluster when this occurred the first time.
    So, how did I fix it this time around? By this point I tried many, many different things, so it is possible that something else fixed it.  However, I believe that all I had to do was to build the FPGA code that the RT code was referencing.  I didn't even have to deploy it or run it... I just had to build it.  My guess is that the problem was the FPGA Reference vi (needed to communicate with the FPGA) is configured (in my case) to reference a bit file.  When the development FPGA Main.vi ceases to match the bit file, I think that bad things happen.  LabVIEW seems to get confused because the FPGA Main.vi development code is up and shows the new changes (and hence has the updated type def), but when you ask the RT code to do something substantial (Open, Save, etc), it refers to the old bit file that has not yet been updated.  That is probably why the error getting thrown was a compile error.
    I'm going to have to do an additional round of changes, so I will test this theory.  Hopefully I will remember to update this post with either a confirmation or a retraction.

  • TableSorter errors when adding new data

    so here is the deal:
    I am using the TableSorter.java helper class with DefaultTableModel
    from: http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
    It works great when the data is static and I get it for the first time. however, occationally, when adding new data I get a NullPointerException error.
    in use:
    DefaultTableModel.addRow()
    DefaultTableModel.removeRow() and
    DefaultTableModel.insertRow() methods.
    Error:
    java.lang.ArrayIndexOutOfBoundsException: 5
         at com.shared.model.TableSorter.modelIndex(TableSorter.java:294)
         at com.shared.model.TableSorter.getValueAt(TableSorter.java:340)
         at javax.swing.JTable.getValueAt(Unknown Source)
         at javax.swing.JTable.prepareRenderer(Unknown Source)...
    code problem I:
        public Object getValueAt(int row, int column)
            return tableModel.getValueAt(modelIndex(row), column);
        }code problem II:
        public int modelIndex(int viewIndex)
                 return getViewToModel()[viewIndex].modelIndex;     
        }TableSroter class:
    package com.shared.model;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import java.util.List;
    import javax.swing.*;
    import javax.swing.event.TableModelEvent;
    import javax.swing.event.TableModelListener;
    import javax.swing.table.*;
    * TableSorter is a decorator for TableModels; adding sorting
    * functionality to a supplied TableModel. TableSorter does
    * not store or copy the data in its TableModel; instead it maintains
    * a map from the row indexes of the view to the row indexes of the
    * model. As requests are made of the sorter (like getValueAt(row, col))
    * they are passed to the underlying model after the row numbers
    * have been translated via the internal mapping array. This way,
    * the TableSorter appears to hold another copy of the table
    * with the rows in a different order.
    * <p/>
    * TableSorter registers itself as a listener to the underlying model,
    * just as the JTable itself would. Events recieved from the model
    * are examined, sometimes manipulated (typically widened), and then
    * passed on to the TableSorter's listeners (typically the JTable).
    * If a change to the model has invalidated the order of TableSorter's
    * rows, a note of this is made and the sorter will resort the
    * rows the next time a value is requested.
    * <p/>
    * When the tableHeader property is set, either by using the
    * setTableHeader() method or the two argument constructor, the
    * table header may be used as a complete UI for TableSorter.
    * The default renderer of the tableHeader is decorated with a renderer
    * that indicates the sorting status of each column. In addition,
    * a mouse listener is installed with the following behavior:
    * <ul>
    * <li>
    * Mouse-click: Clears the sorting status of all other columns
    * and advances the sorting status of that column through three
    * values: {NOT_SORTED, ASCENDING, DESCENDING} (then back to
    * NOT_SORTED again).
    * <li>
    * SHIFT-mouse-click: Clears the sorting status of all other columns
    * and cycles the sorting status of the column through the same
    * three values, in the opposite order: {NOT_SORTED, DESCENDING, ASCENDING}.
    * <li>
    * CONTROL-mouse-click and CONTROL-SHIFT-mouse-click: as above except
    * that the changes to the column do not cancel the statuses of columns
    * that are already sorting - giving a way to initiate a compound
    * sort.
    * </ul>
    * <p/>
    * This is a long overdue rewrite of a class of the same name that
    * first appeared in the swing table demos in 1997.
    * @author Philip Milne
    * @author Brendon McLean
    * @author Dan van Enckevort
    * @author Parwinder Sekhon
    * @version 2.0 02/27/04
    public class TableSorter extends AbstractTableModel
        protected TableModel tableModel;
        public static final int DESCENDING = -1;
        public static final int NOT_SORTED = 0;
        public static final int ASCENDING = 1;
        private static Directive EMPTY_DIRECTIVE = new Directive(-1, NOT_SORTED);
        public static final Comparator COMPARABLE_COMAPRATOR = new Comparator()
            public int compare(Object o1, Object o2)
                return ((Comparable) o1).compareTo(o2);
        public static final Comparator LEXICAL_COMPARATOR = new Comparator()
            public int compare(Object o1, Object o2)
                return o1.toString().compareTo(o2.toString());
        private Row[] viewToModel;
        private int[] modelToView;
        private JTableHeader tableHeader;
        private MouseListener mouseListener;
        private TableModelListener tableModelListener;
        private Map columnComparators = new HashMap();
        private List sortingColumns = new ArrayList();
        public TableSorter()
            this.mouseListener = new MouseHandler();
            this.tableModelListener = new TableModelHandler();
        public TableSorter(TableModel tableModel)
            this();
            setTableModel(tableModel);
        public TableSorter(TableModel tableModel, JTableHeader tableHeader)
            this();
            setTableHeader(tableHeader);
            setTableModel(tableModel);
        private void clearSortingState()
            viewToModel = null;
            modelToView = null;
        public TableModel getTableModel()
            return tableModel;
        public void setTableModel(TableModel tableModel)
            if (this.tableModel != null)
                this.tableModel.removeTableModelListener(tableModelListener);
            this.tableModel = tableModel;
            if (this.tableModel != null)
                this.tableModel.addTableModelListener(tableModelListener);
            clearSortingState();
            fireTableStructureChanged();
        public JTableHeader getTableHeader()
            return tableHeader;
        public void setTableHeader(JTableHeader tableHeader)
            if (this.tableHeader != null)
                this.tableHeader.removeMouseListener(mouseListener);
                TableCellRenderer defaultRenderer = this.tableHeader.getDefaultRenderer();
                if (defaultRenderer instanceof SortableHeaderRenderer)
                    this.tableHeader.setDefaultRenderer(((SortableHeaderRenderer) defaultRenderer).tableCellRenderer);
            this.tableHeader = tableHeader;
            if (this.tableHeader != null)
                this.tableHeader.addMouseListener(mouseListener);
                this.tableHeader.setDefaultRenderer
                        new SortableHeaderRenderer(this.tableHeader.getDefaultRenderer())
        public boolean isSorting()
            return sortingColumns.size() != 0;
        private Directive getDirective(int column)
            for (int i = 0; i < sortingColumns.size(); i++)
                Directive directive = (Directive)sortingColumns.get(i);
                if (directive.column == column)
                    return directive;
            return EMPTY_DIRECTIVE;
        public int getSortingStatus(int column)
            return getDirective(column).direction;
        private void sortingStatusChanged()
            clearSortingState();
            fireTableDataChanged();
            if (tableHeader != null)
                tableHeader.repaint();
        public void setSortingStatus(int column, int status)
            Directive directive = getDirective(column);
            if (directive != EMPTY_DIRECTIVE)
                sortingColumns.remove(directive);
            if (status != NOT_SORTED)
                sortingColumns.add(new Directive(column, status));
            sortingStatusChanged();
        protected Icon getHeaderRendererIcon(int column, int size)
            Directive directive = getDirective(column);
            if (directive == EMPTY_DIRECTIVE)
                return null;
            return new Arrow(directive.direction == DESCENDING, size, sortingColumns.indexOf(directive));
        private void cancelSorting()
            sortingColumns.clear();
            sortingStatusChanged();
        public void setColumnComparator(Class type, Comparator comparator)
            if (comparator == null)
                columnComparators.remove(type);
            else
                columnComparators.put(type, comparator);
        protected Comparator getComparator(int column)
            Class columnType = tableModel.getColumnClass(column);
            Comparator comparator = (Comparator) columnComparators.get(columnType);
            if (comparator != null)
                return comparator;
            if (Comparable.class.isAssignableFrom(columnType))
                return COMPARABLE_COMAPRATOR;
            return LEXICAL_COMPARATOR;
        private Row[] getViewToModel()
            if (viewToModel == null)
                int tableModelRowCount = tableModel.getRowCount();
                viewToModel = new Row[tableModelRowCount];
                for (int row = 0; row < tableModelRowCount; row++)
                    viewToModel[row] = new Row(row);
                if (isSorting())
                    Arrays.sort(viewToModel);
            return viewToModel;
        public int modelIndex(int viewIndex)
                 return getViewToModel()[viewIndex].modelIndex;     
        private int[] getModelToView()
            if (modelToView == null)
                int n = getViewToModel().length;
                modelToView = new int[n];
                for (int i = 0; i < n; i++)
                    modelToView[modelIndex(i)] = i;
            return modelToView;
        // TableModel interface methods
        public int getRowCount()
            return (tableModel == null) ? 0 : tableModel.getRowCount();
        public int getColumnCount()
            return (tableModel == null) ? 0 : tableModel.getColumnCount();
        public String getColumnName(int column)
            return tableModel.getColumnName(column);
        public Class getColumnClass(int column)
            return tableModel.getColumnClass(column);
        public boolean isCellEditable(int row, int column)
            return tableModel.isCellEditable(modelIndex(row), column);
        public Object getValueAt(int row, int column)
            return tableModel.getValueAt(modelIndex(row), column);
        public void setValueAt(Object aValue, int row, int column)
            tableModel.setValueAt(aValue, modelIndex(row), column);
        // Helper classes
        private class Row implements Comparable
            private int modelIndex;
            public Row(int index)
                this.modelIndex = index;
            public int compareTo(Object o)
                int row1 = modelIndex;
                int row2 = ((Row) o).modelIndex;
                for (Iterator it = sortingColumns.iterator(); it.hasNext();)
                    Directive directive = (Directive) it.next();
                    int column = directive.column;
                    Object o1 = tableModel.getValueAt(row1, column);
                    Object o2 = tableModel.getValueAt(row2, column);
                    int comparison = 0;
                    // Define null less than everything, except null.
                    if (o1 == null && o2 == null)
                        comparison = 0;
                    } else if (o1 == null)
                        comparison = -1;
                    } else if (o2 == null)
                        comparison = 1;
                    } else {
                        comparison = getComparator(column).compare(o1, o2);
                    if (comparison != 0)
                        return directive.direction == DESCENDING ? -comparison : comparison;
                return 0;
        private class TableModelHandler implements TableModelListener
            public void tableChanged(TableModelEvent e)
                // If we're not sorting by anything, just pass the event along.            
                if (!isSorting())
                    clearSortingState();
                    fireTableChanged(e);
                    return;
                // If the table structure has changed, cancel the sorting; the            
                // sorting columns may have been either moved or deleted from            
                // the model.
                if (e.getFirstRow() == TableModelEvent.HEADER_ROW)
                    cancelSorting();
                    fireTableChanged(e);
                    return;
                // We can map a cell event through to the view without widening            
                // when the following conditions apply:
                // a) all the changes are on one row (e.getFirstRow() == e.getLastRow()) and,
                // b) all the changes are in one column (column != TableModelEvent.ALL_COLUMNS) and,
                // c) we are not sorting on that column (getSortingStatus(column) == NOT_SORTED) and,
                // d) a reverse lookup will not trigger a sort (modelToView != null)
                // Note: INSERT and DELETE events fail this test as they have column == ALL_COLUMNS.
                // The last check, for (modelToView != null) is to see if modelToView
                // is already allocated. If we don't do this check; sorting can become
                // a performance bottleneck for applications where cells 
                // change rapidly in different parts of the table. If cells
                // change alternately in the sorting column and then outside of            
                // it this class can end up re-sorting on alternate cell updates -
                // which can be a performance problem for large tables. The last
                // clause avoids this problem.
                int column = e.getColumn();
                if (e.getFirstRow() == e.getLastRow()
                        && column != TableModelEvent.ALL_COLUMNS
                        && getSortingStatus(column) == NOT_SORTED
                        && modelToView != null)
                    int viewIndex = getModelToView()[e.getFirstRow()];
                    fireTableChanged(new TableModelEvent(TableSorter.this,
                                                         viewIndex, viewIndex,
                                                         column, e.getType()));
                    return;
                // Something has happened to the data that may have invalidated the row order.
                clearSortingState();
                fireTableDataChanged();
                return;
        private class MouseHandler extends MouseAdapter
            public void mouseClicked(MouseEvent e)
                JTableHeader h = (JTableHeader) e.getSource();
                TableColumnModel columnModel = h.getColumnModel();
                int viewColumn = columnModel.getColumnIndexAtX(e.getX());
                int column = columnModel.getColumn(viewColumn).getModelIndex();
                if (column != -1)
                    int status = getSortingStatus(column);
                    if (!e.isControlDown())
                        cancelSorting();
                    // Cycle the sorting states through {NOT_SORTED, ASCENDING, DESCENDING} or
                    // {NOT_SORTED, DESCENDING, ASCENDING} depending on whether shift is pressed.
                    status = status + (e.isShiftDown() ? -1 : 1);
                    status = (status + 4) % 3 - 1; // signed mod, returning {-1, 0, 1}
                    setSortingStatus(column, status);
        private static class Arrow implements Icon
            private boolean descending;
            private int size;
            private int priority;
            public Arrow(boolean descending, int size, int priority)
                this.descending = descending;
                this.size = size;
                this.priority = priority;
            public void paintIcon(Component c, Graphics g, int x, int y)
                Color color = c == null ? Color.GRAY : c.getBackground();            
                // In a compound sort, make each succesive triangle 20%
                // smaller than the previous one.
                int dx = (int)(size/2*Math.pow(0.8, priority));
                int dy = descending ? dx : -dx;
                // Align icon (roughly) with font baseline.
                y = y + 5*size/6 + (descending ? -dy : 0);
                int shift = descending ? 1 : -1;
                g.translate(x, y);
                // Right diagonal.
                g.setColor(color.darker());
                g.drawLine(dx / 2, dy, 0, 0);
                g.drawLine(dx / 2, dy + shift, 0, shift);
                // Left diagonal.
                g.setColor(color.brighter());
                g.drawLine(dx / 2, dy, dx, 0);
                g.drawLine(dx / 2, dy + shift, dx, shift);
                // Horizontal line.
                if (descending) {
                    g.setColor(color.darker().darker());
                } else {
                    g.setColor(color.brighter().brighter());
                g.drawLine(dx, 0, 0, 0);
                g.setColor(color);
                g.translate(-x, -y);
            public int getIconWidth()
                return size;
            public int getIconHeight()
                return size;
        private class SortableHeaderRenderer implements TableCellRenderer
            private TableCellRenderer tableCellRenderer;
            public SortableHeaderRenderer(TableCellRenderer tableCellRenderer)
                this.tableCellRenderer = tableCellRenderer;
            public Component getTableCellRendererComponent(JTable table,
                                                           Object value,
                                                           boolean isSelected,
                                                           boolean hasFocus,
                                                           int row,
                                                           int column)
                Component c = tableCellRenderer.getTableCellRendererComponent(table,
                        value, isSelected, hasFocus, row, column);
                if (c instanceof JLabel) {
                    JLabel l = (JLabel) c;
                    l.setHorizontalTextPosition(JLabel.LEFT);
                    int modelColumn = table.convertColumnIndexToModel(column);
                    l.setIcon(getHeaderRendererIcon(modelColumn, l.getFont().getSize()));
                return c;
        private static class Directive
            private int column;
            private int direction;
            public Directive(int column, int direction)
                this.column = column;
                this.direction = direction;
    }any input will be appreciated.
    thanks
    Peter

    The code you posted doesn't help us at all. Its just a duplicate of the code from the tutorial. The custom code is what you have written. For example do you update the TableModel from the Event Thread? Do you update the SortModel or the DefaultTableModel? If you actually provide your test code and somebody has already downloaded the sort classes, then maybe they will test your code against the classes. But I doubt if people will download the sort classes and create a test program just to see if they can duplicate your results (at least I know I'm not about to).

  • Error when adding a disk to Cluster Shared Volumes

    When adding a disk to Cluster Shared Volumes via Failover Cluster Manager, I get a couple of errors.
    Event ID 5145 in System Log:
    While adding the disk ('Cluster Disk 1') to Cluster Shared Volumes, setting explicit snapshot diff area association for volume ('\\?\Volume{420e2cc4-4fb4-41be-afb1-65f2ee62457a}\') failed with error 'HrError(0x8004230d)'. The only supported software snapshot
    diff area association for Cluster Shared Volumes is to self.
    Cluster disk resource 'Cluster Disk 1' failed to delete a software snapshot.  The diff area on volume '\\?\Volume{420e2cc4-4fb4-41be-afb1-65f2ee62457a}\' could not be dissociated from volume '\\?\Volume{420e2cc4-4fb4-41be-afb1-65f2ee62457a}\'. This
    may be caused by active snapshots. Cluster Shared Volumes requires that the software snapshot be located on the same disk.
    Any ideas why I'm getting this error?  This disk was previously added as a CSV to different Windows failover cluster, if that matters.  Thanks.

    Hi,
    As the disk was previously used as a CSV, I assume there is still data on it.
    Please check if any VSS snapshot created on that disk. If so, delete them and re-add it as a CSV to see the result - a quick way is to backup important files and perform a re-format if you cannot confirm.
    If you have any feedback on our support, please send to [email protected]

  • Data Binding for Custom Controls?

    Hello,
    I'm a little bit confused of how to use databinding for custom controls.
    I know i can bind a property, as seen here http://help.sap.com/saphelp_uiaddon10/helpdata/en/91/f0f3cd6f4d1014b6dd926db0e91070/content.htm, but how can I map whole arrays?
    My problem is the following:
    I want to create a custom table control in SAPUI5 (as the default one doesn't provide the neccessary options and properties I need), but I can't seem to find an example how to bind "rows".
    There has to be a way to do this properly. All I can think of now, and implemented, is, passing the name of the variable in the model...
    var x = new my.controls.complex.table({data: "/status"});
    var row1 = new my.controls.complex.columnHeaderRow();
    row1.addColumn(new my.controls.complex.column({text: "", rowspan: "2", colspan: "1", content: "FIRST_COL"}));
    x.addColumnsRow(row1);
    x.placeAt("content");
    ...my JSON/model looks like:
    { "status": [ {"FIRST_COL": "a" , ...}, {"FIRST_COL": "b", ... }, ... ], ... }
    (which should translate into /status/0/FIRST_COL, /status/1/FIRST_COL, ... AFAIK)
    ... and then I use this variable name by getting the application-wide model and use the variable passed as key for the model... (please note, this code is just a snippet)
           var sapCore = sap.ui.getCore();
                if (sapCore !== undefined) {
                 var model = sapCore.getModel().getObject();
                 if (model === undefined || model == [] || model == null){ } else {
                  $.each(model, function(idx, item){
                   $.each(oControl.getColumnsRows(), function(idx, item2) {
                    $.each(item2.getColumns(), function(idx, item3){
                     var content = item3.getContent();
                     if (content !== undefined && content != ""){
                      outpLine = outpLine + "<td>" + model[idx][content] + "</td>";
    ...which still leaves me with the problem of to get an event to react to re-render on changes within the data model, as well as when there would be just an control-specific model, or just a sub-node within a model etc.
    So my question is:
    Is there a way/best practice to define data binding in a custom control and have a way to react on it, and how to react on data changes within a custom control?
    Thanks & KR
    Chris

    I create a entirely new control, from sap.ui.core.Control.
    sap.ui.core.Control.extend("my.controls.complex.table",{... });
    I did define a aggregation...
            aggregations : { columnsRows: {type : "my.controls.complex.columnRow", multiple : true, visibility: "public"}     },
    ...yet I'm still unclear how I work with this aggregation and databinding. I know we can use the bindAggreation functionallity, but since the aggregation is a object (my.control.complex.columnRow) I don't know how my JSON model should be able to bind to that aggregation (as well as how would one be able to cascade a aggregation like this down futher? For example if there is an aggregation in the object of my aggregation?), plus it still doesn't solve my problem of how I can react (for example redraw) on model changes.
    Thanks in advance,
    Chris

  • [svn:fx-trunk] 9349: * Added support for using getStyle() in Mxml data binding expressions.

    Revision: 9349
    Author:   [email protected]
    Date:     2009-08-17 11:32:37 -0700 (Mon, 17 Aug 2009)
    Log Message:
    Added support for using getStyle() in Mxml data binding expressions.
      In addition to the existing "function return watcher" data binding
      functionality, we register to listen for style related change events
      when we see a function marked with [Bindable(style="true")].
      UIComponent's and TextGraphicElement's styleChanged() will now
      dispatch events for "getStyle()" FunctionReturnWatchers to handle.
      When null or "styleName" is passed into styleChanged(), we dispatch
      an "allStylesChanged" event.
    QE notes: mxunit test to follow
    Doc notes:
    Bugs: SDK-20394
    Reviewer: Glenn, Pete F, Peter D
    Tests run: checkintests, mxunit databinding
    Is noteworthy for integration: only if you want to start using it.
    Code-level description of changes:
      modules/compiler/src/java/flex2/compiler/as3/binding/DataBindingExtension.java
        Modified generateWatcher() to do the AST equivalent of the
        WatcherSetupUtil.vm change.
      modules/compiler/src/java/flex2/compiler/as3/binding/FunctionReturnWatcher.java
        Removed unused isNew variable and added isStyleWatcher variable.
        Modified shouldWriteSelf() to return true if isStyleWatcher is true.
      modules/compiler/src/java/flex2/compiler/as3/binding/WatcherSetupUtil.vm
        Modified writeFunctionReturnWatcher macro to add a true arg to the
        FunctionReturnWatcher constructor call when isStyleWatcher() is
        true.
      modules/compiler/src/java/flex2/compiler/as3/binding/BindableFirstPassEvaluator.java
        Modified evaluate(Context, MetaDataNode) to skip reporting an
        error for no events when style is true.
      modules/compiler/src/java/flex2/compiler/as3/binding/DataBindingFirstPassEvaluator.java
        Replaced insideCallExpression boolean with callExpressionStack
        Stack.  The "!insideCallExpression" checks were replaced with
        callExpressionStack.isEmpty().
        Modified addBindables() to handle [Bindable(style="true")].
        Made argumentListStack and resetSet more strongly typed.
      frameworks/projects/framework/src/mx/core/UIComponent.as
        Modified styleChanged() to dispatch a "Changed" and "allStylesChanged" from the previous
        parent and add listeners to the new parent when isStyle is true.
        Modified eventHandler to notifyListeners() when isStyle is true.
      frameworks/projects/spark/src/spark/primitives/supportClasses/TextGraphicElement.as
        Similar changes to UIComponent.
    Ticket Links:
        http://bugs.adobe.com/jira/browse/SDK-20394
    Modified Paths:
        flex/sdk/trunk/frameworks/projects/framework/src/mx/binding/FunctionReturnWatcher.as
        flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as
        flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/TextGraphicE lement.as
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/as3/binding/BindableFirstPassEval uator.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/as3/binding/DataBindingExtension. java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/as3/binding/DataBindingFirstPassE valuator.java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/as3/binding/FunctionReturnWatcher .java
        flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/as3/binding/WatcherSetupUtil.vm

Maybe you are looking for

  • Itunes 10.5 crashes whenever I try to open it

    I recently updated Itunes and now it crashes every time I open it and freezes my whole computer.  It starts to update the library then freezes about 3/4 of the way done.  I've already tried uninstalling it and reinstalling, but it doesn't seem to hel

  • Am I able to buy ringtones for my iPhone on the iTunes on my computer?

    I just got the new iPhone 4S, I've never had an iPhone before so I really don't know what I can and can't do on it. But I'm trying to get a new ringtone from iTunes and I was wondering if I only have access to the "ringtones" section of iTunes from m

  • Outlook 2010 on Windows 7 stopped working (after many years) with Yahoo Mail since End Nov 2013

    Yahoo has made design changes to Yahoo month or so ago (Nov 2013). Yahoo now states the Outlook (amongst few other apps) does not work well with Yahoo and Outlook now needs another level of security set up on Yahoo account and a special password gene

  • Can't see text to edit in CS5

    Hi all... I feel extremely stupid asking this question, but using the trial of CS5, when I open a CS4 project I am unable to see the text which I want to edit. I can highlight it (select), and view it in the other compositions but when i go to edit t

  • 5596 - zones best practice

    I never done storage networking before and while configuring and testing our zone/zoneset config I ended up adding targets and all members to the same zone.  I'm positive this is not best practice and hoping someone will point me in the right directi