Implementing 2 Different User Interfaces

Hi all,
i have implemented an application that communicates with a certain type of
digital camera, now there is the demand to support a second type of
camera with a slightly different user interface. My question is, can i use the
code that i already have (something like the DLL concept in Windows, i
believe its called creating my own framework in Mac OS X) and just switch
between interfaces when i detect the second type of camera?
This brings up the question of using 2 different ViewControllers as well.I am
not sure how to go about that at all. Can anybody give me some pointers?
Thank you very much!
Best Regards
artOf...

Imaplemeted a solution... will post it tomomrrow.

Similar Messages

  • Is it possible to implement this user interface?

    Hi People,
    I just defected from the Javascript community. This is my first message, but not the last : )
    What I need a user interface with x,y axes. There will be two points (P1,P2) in the graph, and they can be moved both in x and y axes interactively by the user.
    I attached an ugly looking image to give you a basic idea. The question is, what component should I use to represent points?
    I am sure you have lots of things to do, but I would like to hear your responses.
    Regards,

    Hey Guys,
    I returned to working on the interface i mentioned before. I am still waiting for help.
    Now, to summarize again, I have two points on a diagonal axis on a chart; P1 and P2. P1 and P2 will move along this diagonal axis, and the corresponding areas (red, yellow and green) will change in size depending on the points. i know that Flex has vertical and horizontal sliders, but not a diagonal slider. Furthermore, a slider has only one button, whereas I need to have two buttons on a slider.
    In the new picture you see a horizontal and vertical sliders. I need to combine both of them into a diagonal slider
    on Actionscript forums I saw this idea:
    flashead
    daehsalf
    Join Date: Feb 2005
    Location: Toronto, ON
    Posts: 1,419
    the simplest solution:
    1. make a horizontal (or vertical) slider.
    2. put it in a movie clip.
    3. rotate the movie clip to the desired angle.
    Cheers!
    Any opinions?

  • One user interface for multiple VIs

    I searched and searched for an answer to this so if it's out there please direct me to it.
    I have an application that has roughly 10 different VIs.  These VIs are virtually the same.  All they are doing is monitoring data for the operator for instance: Temperatures, Pressures, Vibrations, etc.,.  I would like to implement a user interface where the operator could click on a button at the bottom of the screen that would take them to the temperature screen.  Once the temperature screen is displayed, I would like to be able to click on a different button that goes to the Pressure screen.  In other words, I want the operator to be able to access any screen they want from any screen they are currently viewing.  So all the buttons would be at the bottom of every screen.  And any screen would be able to access any other screen.  I just have not found a good way to do this.  Every thing I've tried always ends up coming back to a "main.vi".  
    Multiple answers are welcome!  Thanks.  

    Ben wrote:
    DSC has a feature that lets you assign protection levels to each FP control.
    Good to know, having never used DSC. Maybe something to add to my "toolbox" in the future.
    CLA, LabVIEW Versions 2010-2013

  • Is JSP Powerful for User Interfaces

    Hi,
    I am new with JSP and I need to reproduce a very heave user interfaces, I am not sure if it is possible to do it with JSP. Is there any place where I can read how is the best way to implement the user interfaces, generate heavy reports, etc?
    Thank you in advance

    JSP's can handle any user interface I can think of. If you talking about generating reports via print that can be a very time consuming task using html and styles that is if you want them to look professional (have correct print-break and margins).

  • Implementing methods in user interface

    hi how can i implement my tested methods im my user interface which class must i right click to create data control,or there is another way
    Edited by: Tshifhiwa on 2012/05/03 11:23 PM

    What methods are you talking about and what do you want to call from UI .?

  • Using class data in actor user interface?

    This may have been asked before but I've not been able to find anything so far...
    I'm starting to play with the Actor framework in LV2012 and have run into a dilemma.  The system I'm setting up is a fairly common one consisting of test stand control, data acq, logging, control interface, and a "spectator" interface that displays live data for the user(s).  To accomplish this, I have a top level actor that implements the control interface and logging which launches several nested actors that handle stand control and data acq across multiple front ends.  While this works very well for data that comes purely from the measurement front ends, I'm having trouble cleanly integrating meta-data that is generated by the user. 
    Each message coming from an actor farther down the tree can be logged by the top level actor by maintaining the log file information in the class private data.  However, any data generated on the UI of the Actor Core cannot be logged by using the class data in the Actor Core as there is no guarantee that the class data in the Core is the same as that in the message handler, correct?  For instance, say my class data has a log file path and a group name for the TDMS write VI.  If my user wants to add a note to that group, I could use the class data in the Actor Core to write the note as a property.  No problem.  But what if the active group is decided by a message coming from my front end?  Then the group name in the parent actor core is different than the one in my Actor Core with the UI.  The note would land in the wrong group.  So far I have a couple ideas on how to make this work:
    1.) Send relevant update messages from the Actor Core to the top level actor using self-to-self enqueuer so that the class data matches.  This seems clumsy as it would require a lot of code duplication.
    2.) Remove all actual functionality from the Actor Core.  Any UI event would pass data via a message using the self-to-self enqueuer.  This still seems clumsy, but at least would require less duplication (though the same amount of messages).  It would require passing references to all feedback indicators into the class data.
    3.) Consolidate all metadata generation in the Actor Core and create an additional actor which only logs data.  Any message containing data for logging would be forwarded from the top level actor to the Logging actor.  This would provide a consistent strategy for logging data produced by both the user and other actors, and therefore seems like the best idea.
    Does anyone have thoughts on this one?  I'm still pretty undecided as to how best to solve this little issue, and I'm sure others have encountered this before. 
    Thanks.
    CLAD

    Hi testingHotAir
    I just wanted to check in to see if things were working for you with your approach to the solution. It looks like you have a pretty good structure going so it seems like things are set. If you still have questions could you post an example of what you are trying to accomplish? I know my brain sometimes has a hard time grasping the concept of words and has an easier time with actually following code paths.
    If things are working then great!
    Regards,
    James W.
    Applications Engineer
    National Instruments

  • User Interface frozen

    Hello,
    We are using labVIEW for implementing receprocating motion of a motor controlled stage for a user defined cycle number.We have a few different built-in subVIs(provided by the company).There is one subVI that "Run Command" which basically takes a message input as some pre-defined commands as a string as an input for moving a certain distance in one direction.When we used this subVI to implement the reciprocating motion.But now we want to keep track of the current cycle number that is running and for that we implemented a while loop which uses the Get Position subVI and whenever the position is within 10% of the one end of the track it adds one to the current half cycle number variable and then waits for a certain time(which is estmated to be time for one half cycle i,e amplitude/small x velocity) and then again start checking if it's within 10% of the other end of the track and adds 1 accordingly.The whole process is implemented under the event loop in the case named as "Take measurement".
    Now the problem is when the stage starts moveing the user interface gets frozen and we cant access the pause or stop  or terminate buttons.
    Anyone has any idea why it does so?Or any possible suggetsions.Any help will be appreciated.
    (Note:Iwas trying producer/consumer loop but it seems I dont see any data to be put in the queue and to be consumed,probably because it is not very suitable.)
    To open the file please open
    Attachments:
    Reciprocating Motion.llb ‏447 KB

    Your code suffers from a severe case of localitis and squenceitis. It is written like text based code, with frames used as lines and local variabel used as locals. This is not that great to begin with. (see also)
    Still, here's your main problem:
    All you events are set to lock the front panel until the event completes, and it seems that some of your event cases have a hard time completing in a reasonable time (some contain e.g. while loops, etc.).
    You need to decouple the background operations and the UI, e.g. with a queued state machine architecture or similar.
    LabVIEW Champion . Do more with less code and in less time .

  • How can I display step info in User Interface with Tracing Disabled?

    I'm trying to modify the CVI Operator Interface application to update the execute panel with some step information during the execution of the program. i.e. I want to display the measurement, high & low limits during the run WHEN TRACING IS DISABLED. (Doing this, when tracing is enabled is easy, all you do is access the step record that's been constructed (I can cope with that!))
    I've successfully implemented a User defined execution event to signal the User Interface application when the current step is a result (using TS_UIMsg_UserMessageBase etc. I'm posting a UI Message in the Process Model under the ProcessModelPostStep so that I will only display if its a result step.) I've added a user defined
    entry in the execute.c module execution event switch statement which will call a function in the exedisp.c module to update the display. However, I don't have a context to the step that I can use. (I can't use e.g. the exeRec record since this is only completed with the context if tracing is enabled.) I've got a handle to the correct panel to write the information to, but how do I get the context to the current step when tracing is disabled?
    Regards,
    Brian

    Hi,
    no problem - btw, if you wanted to acheive this in TS 1.x, you could always write to a local variable with the ActiveX reference for the step concerned, and then use the msg reference that you have in the OI within the UI Message handler, to dig through to the Execution ->Sequence File->Sequence->Locals, or Execution->Thread->SequenceContext (and you can get almost anywhere from that).
    Hope that helps
    S.
    // it takes almost no time to rate an answer

  • Error while creating a callable object - User Interface

    Hello,
    When i'm trying to create a callable object - User Interface in the guided procedure design time. i'm getting an error. An internal server error. This is happening while i'm trying to create a guided procedure with webdynpro's.
    Is there any body who allready had somthing like this.
    Greetings
    Kurt

    Hi Raja Akella,
    I allready had the roles and my portal version is upgraded until SP8 and all the possible patches.
    I get an internal server error when i want to create a callable object. specially when i want to create a webdynpro ( ABAP / JAVA).
    In the visual administrator i get the following  errors.
    <b>Error 1</b>
    Exception occured during processing of a Web Dynpro application: "com.sap.tc.webdynpro.repository.RepositoryRuntimeException: Failed to get Related Model Object for the object com.sap.caf.eu.gp.dt.comp.semanticbrowser.SemanticBrowserApp, relation Component.".
    [EXCEPTION]
    com.sap.tc.webdynpro.repository.RepositoryRuntimeException: Failed to get Related Model Object for the object com.sap.caf.eu.gp.dt.comp.semanticbrowser.SemanticBrowserApp, relation Component.
         at com.sap.tc.webdynpro.repository.model.DelegatorRepositoryModelClass.getRelatedModelObject(DelegatorRepositoryModelClass.java:640)
         at com.sap.tc.webdynpro.progmodel.repository.IWDApplicationInfo$Implementation.getComponentInternal(IWDApplicationInfo.java:286)
         at com.sap.tc.webdynpro.progmodel.repository.IWDApplicationInfo$Implementation.getComponent(IWDApplicationInfo.java:270)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.addWdappsElement(COConfigWDApp.java:646)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.readWebDynproApps(COConfigWDApp.java:631)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.readApplications(COConfigWDApp.java:308)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.wdp.InternalCOConfigWDApp.readApplications(InternalCOConfigWDApp.java:190)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.VSelect.initCreate(VSelect.java:306)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.VSelect.onPlugFromDispatch(VSelect.java:174)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.wdp.InternalVSelect.wdInvokeEventHandler(InternalVSelect.java:168)
         at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)
         at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.navigate(ClientApplication.java:826)
         at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.navigate(ClientComponent.java:873)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doNavigation(WindowPhaseModel.java:498)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:144)
         at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:330)
         at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
         at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:299)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:711)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:665)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:232)
         at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:152)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Caused by: com.sap.tc.webdynpro.repository.RepositoryRuntimeException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >: (:main:, row:1, col:491)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLConfigurationParserWriter.startParsing(XMLConfigurationParserWriter.java:178)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLPersistence.doReadVMO(XMLPersistence.java:126)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.readVMO(RepositoryPersistence.java:356)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.doFindRepositoryObject(RepositoryPersistence.java:598)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.findRepositoryObject(RepositoryPersistence.java:170)
         at com.sap.tc.webdynpro.repository.model.Repository.findRepositoryObjectInternal(Repository.java:590)
         at com.sap.tc.webdynpro.repository.model.RepositoryObjectRelation$XMLGuidWrapper.getModelObject(RepositoryObjectRelation.java:462)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.getCurrentLayerObject(RepositoryPersistence.java:702)
         at com.sap.tc.webdynpro.repository.model.Repository.getCurrentLayerObject(Repository.java:1483)
         at com.sap.tc.webdynpro.repository.model.NonSharedRelationToOne.doMergeInheritedTarget(NonSharedRelationToOne.java:85)
         at com.sap.tc.webdynpro.repository.model.NonSharedRelationToOne.mergeInheritedTargets(NonSharedRelationToOne.java:49)
         at com.sap.tc.webdynpro.repository.model.RelationToOne.getTarget(RelationToOne.java:93)
         at com.sap.tc.webdynpro.repository.model.AbstractRepositoryModelClass.getRelatedModelObject(AbstractRepositoryModelClass.java:234)
         at com.sap.tc.webdynpro.repository.model.DelegatorRepositoryModelClass.getRelatedModelObject(DelegatorRepositoryModelClass.java:636)
         ... 39 more
    Caused by: com.sap.engine.lib.xml.parser.NestedSAXParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >: (:main:, row:1, col:491)(:main:, row=1, col=491) -> com.sap.engine.lib.xml.parser.ParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >:(:main:, row:1, col:491)
         at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:148)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLConfigurationParserWriter.startParsing(XMLConfigurationParserWriter.java:166)
         ... 52 more
    Caused by: com.sap.engine.lib.xml.parser.ParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >:(:main:, row:1, col:491)
         at com.sap.engine.lib.xml.parser.XMLParser.scanAttList(XMLParser.java:1566)
         at com.sap.engine.lib.xml.parser.XMLParser.scanElement(XMLParser.java:1687)
         at com.sap.engine.lib.xml.parser.XMLParser.scanDocument(XMLParser.java:2792)
         at com.sap.engine.lib.xml.parser.XMLParser.parse0(XMLParser.java:227)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parseAndCatchException(AbstractXMLParser.java:141)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:156)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:259)
         at com.sap.engine.lib.xml.parser.Parser.parseWithoutSchemaValidationProcessing(Parser.java:278)
         at com.sap.engine.lib.xml.parser.Parser.parse(Parser.java:340)
         at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:125)
         ... 53 more
    <b>error 2</b>
    Processing HTTP request to servlet [dispatcher] finished with error. The error is: com.sap.tc.webdynpro.repository.RepositoryRuntimeException: Failed to get Related Model Object for the object com.sap.caf.eu.gp.dt.comp.semanticbrowser.SemanticBrowserApp, relation Component.
         at com.sap.tc.webdynpro.repository.model.DelegatorRepositoryModelClass.getRelatedModelObject(DelegatorRepositoryModelClass.java:640)
         at com.sap.tc.webdynpro.progmodel.repository.IWDApplicationInfo$Implementation.getComponentInternal(IWDApplicationInfo.java:286)
         at com.sap.tc.webdynpro.progmodel.repository.IWDApplicationInfo$Implementation.getComponent(IWDApplicationInfo.java:270)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.addWdappsElement(COConfigWDApp.java:646)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.readWebDynproApps(COConfigWDApp.java:631)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.COConfigWDApp.readApplications(COConfigWDApp.java:308)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.wdp.InternalCOConfigWDApp.readApplications(InternalCOConfigWDApp.java:190)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.VSelect.initCreate(VSelect.java:306)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.VSelect.onPlugFromDispatch(VSelect.java:174)
         at com.sap.caf.eu.gp.ui.co.config.wdapp.wdp.InternalVSelect.wdInvokeEventHandler(InternalVSelect.java:168)
         at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)
         at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.navigate(ClientApplication.java:826)
         at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.navigate(ClientComponent.java:873)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doNavigation(WindowPhaseModel.java:498)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:144)
         at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:330)
         at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
         at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:299)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:711)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:665)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:232)
         at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:152)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Caused by: com.sap.tc.webdynpro.repository.RepositoryRuntimeException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >: (:main:, row:1, col:491)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLConfigurationParserWriter.startParsing(XMLConfigurationParserWriter.java:178)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLPersistence.doReadVMO(XMLPersistence.java:126)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.readVMO(RepositoryPersistence.java:356)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.doFindRepositoryObject(RepositoryPersistence.java:598)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.findRepositoryObject(RepositoryPersistence.java:170)
         at com.sap.tc.webdynpro.repository.model.Repository.findRepositoryObjectInternal(Repository.java:590)
         at com.sap.tc.webdynpro.repository.model.RepositoryObjectRelation$XMLGuidWrapper.getModelObject(RepositoryObjectRelation.java:462)
         at com.sap.tc.webdynpro.repository.persistence.RepositoryPersistence.getCurrentLayerObject(RepositoryPersistence.java:702)
         at com.sap.tc.webdynpro.repository.model.Repository.getCurrentLayerObject(Repository.java:1483)
         at com.sap.tc.webdynpro.repository.model.NonSharedRelationToOne.doMergeInheritedTarget(NonSharedRelationToOne.java:85)
         at com.sap.tc.webdynpro.repository.model.NonSharedRelationToOne.mergeInheritedTargets(NonSharedRelationToOne.java:49)
         at com.sap.tc.webdynpro.repository.model.RelationToOne.getTarget(RelationToOne.java:93)
         at com.sap.tc.webdynpro.repository.model.AbstractRepositoryModelClass.getRelatedModelObject(AbstractRepositoryModelClass.java:234)
         at com.sap.tc.webdynpro.repository.model.DelegatorRepositoryModelClass.getRelatedModelObject(DelegatorRepositoryModelClass.java:636)
         ... 39 more
    Caused by: com.sap.engine.lib.xml.parser.NestedSAXParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >: (:main:, row:1, col:491)(:main:, row=1, col=491) -> com.sap.engine.lib.xml.parser.ParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >:(:main:, row:1, col:491)
         at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:148)
         at com.sap.tc.webdynpro.repository.persistence.xml.XMLConfigurationParserWriter.startParsing(XMLConfigurationParserWriter.java:166)
         ... 52 more
    Caused by: com.sap.engine.lib.xml.parser.ParserException: XMLParser: Bad attribute list. Expected WhiteSpace, / or >:(:main:, row:1, col:491)
         at com.sap.engine.lib.xml.parser.XMLParser.scanAttList(XMLParser.java:1566)
         at com.sap.engine.lib.xml.parser.XMLParser.scanElement(XMLParser.java:1687)
         at com.sap.engine.lib.xml.parser.XMLParser.scanDocument(XMLParser.java:2792)
         at com.sap.engine.lib.xml.parser.XMLParser.parse0(XMLParser.java:227)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parseAndCatchException(AbstractXMLParser.java:141)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:156)
         at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:259)
         at com.sap.engine.lib.xml.parser.Parser.parseWithoutSchemaValidationProcessing(Parser.java:278)
         at com.sap.engine.lib.xml.parser.Parser.parse(Parser.java:340)
         at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:125)
         ... 53 more
    <b>error 3</b>
    Processing HTTP request to servlet [dispatcher] finished with error.
    The error is: com.sap.tc.webdynpro.repository.RepositoryRuntimeException: Failed to get Related Model Object for the object com.sap.caf.eu.gp.dt.comp.semanticbrowser.SemanticBrowserApp, relation Component.
    Exception id: [00505691431B006F0000003E00000FE800041B45B87F7617]
    thanks in advance
    Kurt

  • User Interface Template for Interactive Report Region

    In 3.2, where do we set the user interface template for Interactive Reports region?
    No matter what out of the box theme I switch to, the Interactive Reports region shows the same. What and where do I change the template so that alternating rows use two different colors?

    There is no template for Interactive Reports like for a "normal" report. You need to modify the CSS and supply your own for this to happen.
    I believe most things are tagged with #apexir - firebug with Firebox is invaluable. This thread may help:
    Re: changing the look and feel of interactive report.

  • A more successful experiment in creating compositable user interfaces for Config Dialogs

    A couple weeks ago I posted an experiment in creating compositable user interfaces using transparent subpanels. The approach might best be described as, "It at least was notable for being novel."
    Today, I'm posting another attempt, this one along more traditional lines, and far more successful. Particularly notable: this one can do all the arbitrary composition of the last one AND it solves the TAB order problem.
    This solution uses a picture control and renders N copies of a control. When the user tabs to a control or moves the mouse over the control, a real control slides into that position to be able to catch the events (update mouse over draw state, highlight for keyboard focus, handle typing, etc). When the Value Change occurs, a master array of data is updated and the picture control is updated.
    This is something that has been attempted in various forms in the past, but there are two aspects of this particular implementation that make it nice:
    its programmatic interface for specifying the behavior of the various objects should make it fairly easy for a user of the framework to programmatically generate their dialogs
    it handles the TAB problem without flickering, something I haven't seen in other attemps
    This idea spawns out of conversation about the previous experiment -- thanks to those of you who posted on various forums, e-mailed me, or, in a couple cases, showed up at my desk. That last one is not something I'm encouraging unless you work at NI... just saying. :-)
    Now, this experiement has already yeilded some interesting conversation. We note that as long as controls are instantiated independent of each other -- that is, no property of one control depends upon the property of another control -- this dialog system scales nicely. But in this experiment, I implemented Radio Buttons, which interact with each other -- when one is set True, the others go False. As soon as controls start interacting with each other (such as graying out one control when a checkbox is toggled, or having expandable sections, or really complex cases like updating a graph as some options change, like happens in some Express VI config dialogs) then we start needing ways to refer to the other controls. This rapidly moves us in one of two directions: naming controls or creating references. The naming approach is definitely my preference as it fits better with dataflow and I can do some interesting effects with breaking apart some of the tree. But all of this quickly starts sounding like "Please implement a XAML parser in LabVIEW." For those of you unfamiliar with XAML, in the world of UI design, it might very well be the coolest thing since sliced bread. A XAML string would indeed fit with dataflow, and we could start building that up. I hesitate to head down this road for two reasons. One, as many have noted, there's really not a good XML parsing library written in LabVIEW that can give me a useful DOM tree. Two, that's a huge project and my gut sense is that you'd have to complete a fairly large chunk of it before you'd start seeing any return on investment. But it is worth thinking about -- I might be wrong. Wouldn't be the first time. This code that I've posted today can at least get you started on the generation side if one of you decides to become industrious.
    I'm turning my attention away from this project for now... coding in G is lots of fun, and I wish I could spend more days doing it, but this has been a side project and it's time to get back to my assigned projects in text programming. Building a powerful platform for automatic UI generation in LabVIEW would be really useful -- I see lots of requests for this sort of thing, and other languages are pulling ahead of us in this domain.
    [UPDATE 5/17/2012 - There is an improved version.]
    Solved!
    Go to Solution.
    Attachments:
    ConfighThroughCtrlCreation.zip ‏558 KB

    Elijah K wrote:
    Thanks for posting this Aristos.  I would normally be one of those to go bug you at your desk, but in case I'm not the only one with this question... which particular flickering problem are you referring to?  The act of switching tabs?  In all honesty, I've never noticed...
    When you move controls around on the screen, normally you try to Defer Panel Updates while you do that. But Defer Panel Updates has an effect on control's abilities to catch certain mouse clicks, so when you're trying to move a control to catch the mouse, you have to work a lot without Defer Panel Updates, so if you're adjusting captions, etc, to match the new location, you can see flicker as properties adjust. You can move the control off-screen, as long as you have already updated the picture control to reflect the changes. It took a while to catch all the ways that the flickering can crop up. I think I got 'em all.
    Attached are the VIs saved for LV 2009. Actually, they're saved for LV 8.6, but it doesn't work in 8.6 because of a bug in the picture control that existed back then.
    Attachments:
    ComposableUI_LV2009.zip ‏391 KB

  • How to display the updated data from db to user interface in sruts framewor

    A beginner in this area, I have been able to read a record from a
    MySQL database and populate in jsp form . Now, my goal is to
    allow the user to edit the contents of the form and then update the
    record in MySQL and then display the same in jsp. page
    The scenario in detail
    1)the data is fetched from db and displayed in non-editable format
    2)Next button is clicked
    3)Now in the same jsp page I view the same data from db in editable format
    4)The user is allowed to change the information
    5)Now update button is clicked
    6)the records are updated in the db -Finished doing till this step
    7)But the updated info in non - editable format to be displayed in jsp page is left pending.
    Here is my code for jsp,i want know how to write an action for this,tried doing the same in java and I'm successful.but what I need is how to fetch the updated information in the user interface.
    I've made both editable as well as non editable info in the same page with different actions.
    pl help me,I'm a newbie
    <%@ taglib uri="/WEB-INF/struts-bean" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-logic" prefix="logic" %>
    <%@ page language="java" %>
    <%@ page import="java.util.ArrayList,java.util.Iterator" %>
    <%@ page import="com.finocus.common.container.CustomerDetailsTest;" %>
    <html:html>
    <head>
         <title>CUSTOMER DISPLAY</title>
    </head>
    <body>
         <table width="100%" bgcolor="darkkhaki">
         <tr>
              <td><table width="100%" bgcolor="indigo">
                   <tr>
                        <td><font color="white">Display</font></td>
                        <td><font color="white">Update</font></td>
                        <td><font color="white">Verify</font></td>
                        <td><font color="white">Confirm</font></td>
                   </tr>
                   </table>
              </td>
         </tr>
    <%
              //Container for holding data
              ArrayList list = (ArrayList)session.getAttribute("CUSTOMERDETAILS");
              Iterator itr=list.iterator();
              while(itr.hasNext())
              CustomerDetailsTest cust = (CustomerDetailsTest) itr.next();
              System.out.println("testGetCustomerDetails()-successed. retrieved CustomerDetailsTest="+cust.toString());
    %>
    <%
              //Session for checking whether edit or non-edit mode
              String pageMode = (String)session.getAttribute("CUSTOMER_PAGE_MODE");
              session.removeAttribute("CUSTOMER_PAGE_MODE");
              if(null==pageMode)
                   pageMode = "EDIT";
              if(pageMode.equals("EDIT"))
                   //display data in the form
                   System.out.println("Editable mode");
    %>
              <html:form action="/nonedit">
                   <tr>
              <td><table width="100%" bgcolor="darkkhaki">
              <tr>
                        <td><b><bean:message key="label.id"/></b></td>
                        <td><font color="red"><%=cust.getCusId()%></font></td>
         </tr><br>
         <td>
                             <font color="brown" face="Courier New"><b>
                        <bean:message key="label.Company"/></b>
                        </td><br>
                        <tr>
                   <td><bean:message key="label.cname"/></td>
                   <td><font color="blue"><html:text property="name" value="<%=cust.getCname()%>"/></font></td>
                        <td><bean:message key="label.cphone"/></td>
                        <td><font color="blue"><html:text property="phone" value="<%=cust.getCphone()%>"/></font></td>
              </tr><br>
         <tr>
                   <td><bean:message key="label.caddr1"/></td>
                   <td><font color="blue"><html:text property="address1" value="<%=cust.getCaddress1()%>"/></font></td>
                        <td><bean:message key="label.cemail"/></td>
                        <td><font color="blue"><html:text property="email" value="<%=cust.getCemail()%>"/></font></td>
              </tr><br>
         <tr>
                   <td><bean:message key="label.caddr2"/></td>
                   <td><font color="blue"><html:text property="address2" value="<%=cust.getCaddress2()%>"/></font></td>
                        <td><bean:message key="label.cfax"/></td>
                        <td><font color="blue"><html:text property="fax" value="<%=cust.getCfax()%>"/></font></td>
              </tr><br>
         <tr>
                   <td><bean:message key="label.ccity"/></td>
                   <td><font color="blue"><html:text property="city" value="<%=cust.getCcity()%>"/></font></td>
                        <td><bean:message key="label.czip"/></td>
                        <td><font color="blue"><html:text property="zip" value="<%=cust.getZip()%>"/></font></td>
              </tr><br>
         <tr>
                   <td><b><bean:message key="label.cstate"/></b></td>
                   <td><font color="red"><html:text property="state" value="<%=cust.getCstate()%>"/></font></td>
         </tr><br>
         <td>
                             <font color="brown" face="Courier New"><b>
                        <bean:message key="label.Admin"/></b>
                        </td><br>
         <tr>
                   <td><b><bean:message key="label.AAname"/></b></td>
                   <td><font color="red"><html:text property="adminname" value="<%=cust.getAname()%>"/></font></td>
         </tr><br>
         <tr>
                   <td><b><bean:message key="label.AAemail"/></b></td>
                   <td><font color="red"><html:text property="adminemail" value="<%=cust.getAemail()%>"/></font></td>
         </tr><br>
         <tr>
                   <td><b><bean:message key="label.AAphone"/></b></td>
                   <td><font color="red"><html:text property="adminphone" value="<%=cust.getAphone()%>"/></font></td>
         </tr><br>
         <td>
                             <font color="brown" face="Courier New"><b>
                        <bean:message key="label.User"/></b>
                        </td><br>
         <tr>
                   <td><b><bean:message key="label.AUname"/></b></td>
                   <td><font color="red"><html:text property="adminusername" value="<%=cust.getUname()%>"/></font></td>
         </tr><br>
         <tr>
                   <td><b><bean:message key="label.AUemail"/></b></td>
                   <td><font color="red"><html:text property="adminuseremail" value="<%=cust.getUemail()%>"/></font></td>
         </tr><br>
              <tr align="center">
                        <td><html:cancel value="Cancel"/>
                        <html:submit value="Next"/></td>
              </tr>
              </html:form>
    <%               
              }else
                   //display data in the text
                   System.out.println("Non-Editable mode");
    %>
              <html:form action="/edit">
              <tr>
              <td><table width="100%" bgcolor="darkkhaki">
                   <tr>
                        <td><b><bean:message key="label.id"/></b></td>
                        <td><font color="red"><%=cust.getCusId()%></font></td>
                        <td><b><bean:message key="label.status"/></b></td>
                        <td><font color="red"><%=cust.getStatus() %></font></td>
         </tr><br>
         <td>
                             <font color="brown" face="Courier New"><b>
                        <bean:message key="label.Company"/></b>
                        </td><br>
                        <tr>
                   <td><bean:message key="label.cname"/></td>
                   <td><font color="blue"><%=cust.getCname()%></font></td>
                        <td><bean:message key="label.cphone"/></td>
                        <td><font color="blue"><%=cust.getCphone()%></font></td>
              </tr><br>
         <tr>
                   <td><bean:message key="label.caddr1"/></td>
                   <td><font color="blue"><%=cust.getCaddress1()%></font></td>
                        <td><bean:message key="label.cemail"/></td>
                        <td><font color="blue"><%=cust.getCemail()%></font></td>
              </tr><br>
         <tr>
                   <td><bean:message key="label.caddr2"/></td>
                   <td><font color="blue"><%=cust.getCaddress2()%></font></td>
                        <td><bean:message key="label.cfax"/></td>
                        <td><font color="blue"><%=cust.getCfax()%></font></td>
              </tr><br>
         <tr>
                   <td><bean:message key="label.ccity"/></td>
                   <td><font color="blue"><%=cust.getCcity()%></font></td>
                        <td><bean:message key="label.czip"/></td>
                        <td><font color="blue"><%=cust.getZip()%></font></td>
              </tr><br>
         <tr>
                   <td><b><bean:message key="label.cstate"/></b></td>
                   <td><font color="red"><%=cust.getCstate()%></font></td>
         </tr><br>
         <td>
                             <font color="brown" face="Courier New"><b>
                        <bean:message key="label.Admin"/></b>
                        </td><br>
         <tr>
                   <td><b><bean:message key="label.AAname"/></b></td>
                   <td><font color="red"><%=cust.getAname()%></font></td>
         </tr><br>
         <tr>
                   <td><b><bean:message key="label.AAemail"/></b></td>
                   <td><font color="red"><%=cust.getAemail()%></font></td>
         </tr><br>
         <tr>
                   <td><b><bean:message key="label.AAphone"/></b></td>
                   <td><font color="red"><%=cust.getAphone()%></font></td>
         </tr><br>
         <td>
                             <font color="brown" face="Courier New"><b>
                        <bean:message key="label.User"/></b>
                        </td><br>
         <tr>
                   <td><b><bean:message key="label.AUname"/></b></td>
                   <td><font color="red"><%=cust.getUname()%></font></td>
         </tr><br>
         <tr>
                   <td><b><bean:message key="label.AUemail"/></b></td>
                   <td><font color="red"><%=cust.getUemail()%></font></td>
         </tr><br>
         <tr align="center">
                        <td><html:submit value="Update"/></td>
              </tr>
              </html:form>
    <%
    %>
    <%
    %>
                   </table>
              </td>
              </tr>
         </table>
    </body>
    </html:html>

    u r using action classes. so after calling the insert method in Action Class to a dao... the next statement should be retrieve statement. so at the time of updating first it will get updated.. the next statement it will execute is retrieve and then set these details in VO or FORM and show it on JSP
    Message was edited by:
    leo_michael

  • Why do I get -18001 Errors using Customised TestStand User Interface

    Hi all
    I have a problem when attempting to run my application on my host NT PC. I have a customised operator interface to TestStand written using Labview 5.1.1 and built using the LabVIEW application builder. I am running the TestStand Development (Run-Time) System on my host PC.
    The problem is that as soon as I go to run my sequence of vis (mass compiled using the same version of LabVIEW and assembled for run-time distribution) I receive the error '-18001 VI Not Executable.'
    I think this is probably to do with how I've included the ActiveX server in my LabVIEW User Interface application, but knowing very little about ActiveX I'm not sure exactly what the problem is.
    If anyone
    has any ideas, I would be extremely grateful for any assistance you could offer. My TS version is 1.0.1
    Thanks
    Dave

    David,
    I would like to add to Richard's input. The typical reasons a VI cannot be executed that cause this message are:
    1) There is an error in the VI such that the run arrow of the VI is broken when the VI is open in the LV development environment. This problem is usually easy to debug because you should get the error (shown below) when running your sequence in the sequence editor using the default "LabVIEW" ActiveX server provided by the LV development environment (not the LV ActiveX server provided by your operator interface which is by default named "TestStandLVGUIRTS" ).
    An error occurred in the 'MyVIStep' step of the 'MainSequence' sequence in 'MySequence.seq'.
    LabVIEW : VI is not executable.
    An error occurred accessing the LabVIEW ActiveX automation server. Error Code: -18001
    2) The same error will occur when
    a. you are using any LV ActiveX server other than the "LabVIEW" server provided by the LV development environment, AND
    b. at least one of the called VI was not assembled for distribution properly. This means that not all test VIs and their *entire* hierarchy were distributed.
    I am not sure exactly what you have done so have compiled some information that I think will help. Below I have included the document, Overview of Distributing TestStand when your Sequences use the LV Standard Prototype Adapter, which will appear in the NIDZ shortly. Another useful document is the NIDZ document Distributing LabVIEW Test VIs, which you can obtain from our website. Read these documents before preceding with the steps immediately below, which give you an example process for distributing. This may help provide a better understanding and guidance in the distribution process. We are working to simplify this process in future versions of TestStand.
    For the following example distribution I recommend that you are use default shipping code so that the problem is not complicated with potential errors added through customizations you have made.
    Building The Operator Interface
    The following are steps if you are using a LabVIEW operator interface.
    1) Copy the contents of \OperatorInterfaces\NI\LV to \OperatorInterfaces\User\LV.
    2) Open a new VI in LabVIEW. Make sure all other VIs are closed.
    3) In LabVIEW Select Tools>>Build Application or Shared Library
    4) In the builder click the Load button and load \OperatorInterfaces\User\LV\testexec.bld. This build script is configured to create testexec.exe that contains the LV ActiveX server with the name of TestStandLVGUIRTS (see the Application tab of the builder).
    5) In the builder click Build.
    6) Once the application testexec.exe is built, run it once so that the server TestStandLVGUIRTS is automatically registered. You do not need to run a sequence. Close texec.exe.
    Creating a LabVIEW Run-time Server
    If you are using the LabVIEW operator interface then skip this section. The following steps are meant for those who use an operator interface written in a ADE other than LabVIEW. They provide you with a LabVIEW run-time server that is used by TS to run your VIs.
    1) Copy the contents of \Components\NI\RuntimeServers to \Components\User\RuntimeServers.
    2) Open a new VI in LabVIEW. Make sure all other VIs are closed.
    3) In LabVIEW Select Tools>>Build Application or Shared Library
    4) In the builder click the Load button and load \Components\User\RuntimeServers\LabVIEW\TestStandLVRTS.bld. This build script is configured to create TestStandLVRTS.exe that contains the LV ActiveX server with the name of TestStandLVRTS (see the Application tab of the builder).
    5) In the builder click Build.
    6) Once the application TestStandLVRTS.exe is built, run it once so that the server TestStandLVRTS is automatically registered on your development machine. Close TestStandLVRTS.exe.
    Assembling the Test VIs for Run-Time Distribution
    This distribution process uses one of the shipping TS examples that calls LV VIs.
    1) From LV mass compile all VIs in the directory \Examples\AccessingArrays\UsingLabVIEW\. Please make sure that there were no error messages in the Status tab of the Mass Compile dialog box.
    2) In the sequence editor open \Examples\AccessingArrays\UsingLabVIEW\AccessingArrays.seq
    3) Confirm that the sequence runs without problem.
    4) In the sequence editor select Tools>>Assemble Test VIs for Run-time Distribution.
    5) If you are using TestStand 2.0 select \Examples\AccessingArrays\UsingLabVIEW\AccessingArrays.seq as the file from which the VIs should be assembled.
    6) Set the target directory to be something distinct like C:\temp\AssblVIs.
    7) If you are using TestStand 2.0 skip adding Dynamic VIs
    8) Save with or without diagrams. Its your choice.
    Change Search Directories
    Once the VIs are assembled successfully, you must add the new target directory to the TS search directories.
    1) In the sequence editor select Configure>>Search Directories.
    2) Add your target search directory (e.g. C:\temp\AssblVIs) to the search directories.
    3) Close the Edit Search Directories dialog box.
    4) Confirm that your sequence steps now reference the assembled VIs. Right click on a step in the sequence and select Specify Module.
    5) The dialog should show that the code module is found in the target directory (e.g. C:\temp\AssblVIs) that you just added to the search directories.
    6) Run the sequence. This is the initial test to see if the VIs are assembled properly.
    Switch the LV Adapter to use the TestStandLVRTS server or TestStandLVGUIRTS
    1) In the sequence editor select Configure>>Adpaters.
    2) In the Configurable Adapters control select the LabVIEW Standard Prototype Adapter and then click the Configure button.
    3a) If you are not using the LV operator interface then switch the ActiveX server to TestStandLVRTS.
    3b)If you are using the LV operator interface then switch the ActiveX server to TestStandLVGUIRTS.
    4) Close the adapter configuration dialog boxes. You will get a couple of questions boxes. Just click OK each time.
    5) Now run your sequence. If successful you are no longer using the LV development environment to run your VIs. This shows that the VIs were assembled correctly, the LV ActiveX server is working properly and that the search directories are configured properly.
    You can now try and run the sequence using your operator interface on you development computer. If this test works it means that you have also confirmed that your operator interface is working correctly with all the other components. Now it is just a matter of moving all the component correctly to the target machine.
    Distributing Components
    -To distribute your operator interface use the distribution tool of the application development environment (ADE) in which you built your operator interface.
    -To distribute the TS engine using the Run Engine Installation Wizard tool. This tool is typically not used for distributing your sequences and VIs, which you will probably distribute more frequently than the TS engine. It does distribute and register your LV run-time server (if you are using one) as long as you have stored it in \Components\User\RuntimeServers. It also distributes other TS components that you have stored under the directory \Components\User\.
    -You can use whatever distribution system you like to distribute your VIs and sequence files (e.g. ZIP and network transfer are popular) . Ensure that you distribute the assembled VIs and not the development VIs. Also ensure that the location of the VIs on the target machine is one of the TS search directories.
    Hope this helps.
    Regards,
    Kitt
    =========================================
    Title:
    Overview of Distributing TestStand when your Sequences use the LV Standard Prototype Adapter
    The general outline of the components to be distributed and the actions to take are followed by a more detailed description.
    Components that need to be distributed:
    TS engine
    Operator interface
    LabVIEW executable that will act as a LabVIEW ActiveX automation server (If the operator interfaces is written in LabVIEW, it can function as the LabVIEW ActiveX automation server.).
    LabVIEW run-time engine
    LabVIEW test VIs
    Test sequence files
    Actions before distributing:
    It is recommended that you test the distribution components on the development machine before you distribute them to your target machine. In this manner you can more easily debug errors that you may encounter
    Create the executable that will serve as your LabVIEW ActiveX server on the target machine (components 2 or 3 above).
    Assemble the test VIs for distribution.
    Update the TestStand search directories so that the sequences reference the assembled VIs.
    Configure the LabVIEW Standard Prototype Adapter to use the LabVIEW ActiveX server that you will install on the target machine.
    Test the distribution components on the development machine.
    Enter section headings, separating each section with a line break:
    TS Engine Component
    Operator Interface Component
    LabVIEW ActiveX Server
    Configuring the LabVIEW Standard Prototype Adapter
    LabVIEW Run-time Engine Component
    Assembling your Test VIs for Distribution
    Note
    TS Engine Component
    With any TestStand distribution you must install the TestStand runtime engine on the target machine. The Run Engine Installation Wizard tool, found under Tools menu of the Sequence Editor, facilitates this process. The wizard tool will create two files, SetupTSEngine.exe and TSEngine.cab. Move the two files to your target machine and run SetupTSEngine.exe to install the TestStand engine.
    These installation files include the current configuration settings that exist in the Sequence Editor at the time the tool is invoked. It also includes all process models, TestStand types and step type modules. If you have customized components of TestStand and saved them under the directory TestStand\Components\User, then the components will also be included with the engine installation.
    You must purchase at least a base deployment or debug deployment license for each machine on which you install the TestStand engine.
    Operator Interface Component
    You will also need to install an operator interface executable on the target machine. This program acts as a client to the TS runtime engine, controlling the execution of sequences and displaying their progress. TestStand ships with several versions of TestStand operator interfaces, which are written in different application development environments (ADE). For distributing the operator interface executable, refer to the application development environment in which it was created.
    LabVIEW ActiveX Server
    You must have a LabVIEW ActiveX server on the target machine. TestStand uses the LabVIEW ActiveX server to run VIs using either the LabVIEW development environment or the LabVIEW runtime engine. The LabVIEW ActiveX server is provided by either LabVIEW development environment or by any LabVIEW executable that has been built with �Enable ActiveX Server� selected. This setting can be accessed in the LabVIEW Application Builder during the build process. When this preference is enabled, you must enter a server name. You will use the server name to configure the LabVIEW Standard Prototype adapter in TestStand.
    If your operator interface is written in LabVIEW, then it can act as the LabVIEW ActiveX server on your target machine. TestStand ships with two operator interfaces written in LabVIEW. The standard LabVIEW operator interface is located in TestStand\OperatorInterfaces\NI\LV, while a simplified version is located in TestStand\Examples\OperatorInterfaces\Simple LV. LabVIEW buildscripts are provided for these applications to facilitate building an operator interface in the latest version of LabVIEW. The settings of these buildscripts are such that the applications are LabVIEW ActiveX servers with the server names of TestStandLVGUIRTS for the standard operator interface, and TestStandSimpleLVGUIRTS for the simple operator interface. The applications register the servers the first time they are executed. If you want to manually register or unregister one of the servers, you can invoke the executable with the /RegServer and /UnregServer command-line arguments respectively.
    If your operator interface is programmed in a language other than LabVIEW, then you will need a separate LabVIEW executable to provide the LabVIEW ActiveX server on your target machine. For this purpose, TestStand ships with a LabVIEW run-time server application located in TestStand\Components\NI\RuntimeServers\LabVIEW. A LabVIEW buildscript is provided for this application to facilitate building a run-time server in the latest version of LabVIEW. The settings of this buildscript are such that the application is a LabVIEW ActiveX server with the server name of TestStandLVRTS.
    Note: When an ActiveX executable server is accessed, the executable is launched automatically if it is not already executing.
    Configuring the LabVIEW Standard Prototype Adapter
    When TestStand runs a VI using the LabVIEW Standard Prototype adapter, it does so using a LabVIEW ActiveX server. By default the adapter is configured to use the �LabVIEW� server, which is provided by the LabVIEW development environment. If you do not have the LabVIEW development environment on your target machine then you must configure the LabVIEW Standard Prototype adapter within TestStand to use a different server (e.g. TestStandLVGUIRTS, TestStandLVRTS, or TestStandSimpleLVGUIRTS).
    To configure your LabVIEW Standard Prototype adapter, select Configure>>Adapters from the menu. In the Adapter Configuration dialog box that appears, select the LabVIEW Standard Prototype Adapter in the Configurable Adapters section. Click the Configure button. You can select or type a server name in the Select or Type Which LabVIEW ActiveX Server to User control. If your server name is not in the list you will need to type it.
    As explained in the LabVIEW ActiveX Server section above, TestStand ships with LabVIEW buildscripts to build a LabVIEW operator interface and a LabVIEW run-time server application. These applications are LabVIEW ActiveX servers with server names TestStandLVGUIRTS and TestStandLVGRTS, respectively. You can configure you LabVIEW Standard Prototype adapter to use one of these servers.
    LabVIEW Run-time Engine Component
    If any of your sequence steps use the LabVIEW adapter or if your operator interface is written in LabVIEW, then you must install the LabVIEW runtime engine on the target machine. It is important that your LabVIEW run-time engine is the same version as the VIs that TestStand executes.
    You can find installation files for the LABVIEW 5.1 run-time engine in the LabVIEW installation directory, Labview\APPLIBS\installs\RunTime. In addition, you can choose to automatically distribute and install the LabVIEW run-time engine with the distribution of a LabVIEW executable. Refer to LabVIEW documentation.
    Assembling your Test VIs for Distribution
    After distributing TestStand, you must ensure that your sequences are able to locate the VIs they call, and the VIs must be able to locate their required resources.
    One common mistake is to simply copy the original VIs from the development machine to the target machine. Once you have configured your LabVIEW Standard Prototype adapter to use a LabVIEW ActiveX server other than LabVIEW, your sequence will not be able to execute your original test VIs that your sequences call.
    TestStand provides the Assemble Test VIs for Distribution tool, which gathers test VIs and their required resources, and places them in a common location for distribution. You can then modify your TestStand search directories so that your sequences reference the assembled VIs. These topics are covered in the NIDZ document Distributing LabVIEW Test VIs.
    Links: See Distributing LabVIEW Test VIs below
    Note
    Remember to test your distribution components on your TestStand development system before distributing TestStand. If the execution does not work on the development system it is not going to work on your target machine. On your development machine you have more ability to debug problems you may encounter.
    Note: One common problem of testing distribution components on your TestStand development system is that your sequences reference the original Test VIs instead of the assembled test VIs. Refer to the NIDZ document Distributing LabVIEW Test VIs for assistance.
    Once the components work on your development machine, you are ready to install them on your target machine. The order in which you install these components on the target machine is irrelevant.
    ==============================================

  • When is it possible to have the same User Interface for all screensizes?

    Hi all, i am final year student doing some research about User Interface Fragmentation on Mobile devices. As we already know, there are a huge variety of mobile screen sizes, and usually to provide users the best experience interfaces, we often have to customize the UI of one application in one phone to another. So i wondered when it is OK to have the same UI for all screen sizes?
    Thanks.

    It's usually OK if you don't use CustomItem, avoid extra-long Strings in titles etc. You might also need to scale any Canvas / GameCanvas graphics and Images using a scaling factor computed from the detected screen size.
    I have 3 applications for free download from GetJar.com (search "Colorz") which have only the one version for all MIDP 2.0 devices, and there have been no complaints in a combined total of over 11,000 downloads ;-)
    In any case, UI diversity is the least of the headaches any j2me developer faces, there are many features of j2me that are unimplemented or incorrectly implemented on various devices. Even the CLDC reference implementation has unaddressed bugs.
    luck, db

  • Dynamic user interfaces

    Hello,
    here's a little teaser for user interface experts out there:
    I wonder what kind of techniques ABAP offers for creating dynamic user interfaces.
    When talking of 'dynamic' I imagine something like an arbitrary number of 'containers' where other programs (classes f.ex.) can draw their own user interface into.
    In Java this could be realized with the container concept in swing.
    I have done some research on this topic and the results are so far:
    a plain dynpro: seems to have no dynamic at all -> not an option
    a plain dynpro with a tabstrip: in case the number of tabs CAN be set at runtime AND the subscreens CAN be drawn from inside separate classes -> a definite option otherwise not an option
    any kind of web-frontend (BSP, JSP etc.): web-frontends are not allowed by company restrictions -> not an option
    dynamic documents: I could not find many information on these yet (also not on sdn). In case that an arbitrary number of parts of the dynamic document can be created from inside separate classes -> an option otherwise not an option
    I will be happy about any further information on this topic.
    Best regards,
    Patrick Baer

    I spent some time today doing research on BSP's and built a "BSP-Viewer" embedded into the SAP-GUI. Though I like the concept of BSP's a lot (like I did already with JSP's) but company restricitions are too strict. So BSP's are out of the play.
    After the discussion I started to play around with the different containers and basically I'm quite pleased with them and the "cl_gui_container_bar" allows an arbirtary number of "subscreens" which matches my requirements.
    But as usual there's still a downside:
    I found no option to built text labels and text fields into a container. Unless this is possible I can't give this approach a chance. I already found some postings which seemed to confirm that this is in fact not possible but I can't really believe it. At least from what it looks like it seems to me that the object navigator utilizes both: splitters, containers and all the stuff AS WELL AS the "classical" elements like text boxes, labels and so on.
    Any ideas on how to combine the container concept with text fields, labels maybe whole dynpros or subscreens ?
    Best regards,
    Patrick Baer

Maybe you are looking for