How to dynamically load Nodes?

Hi,
is it possible to dynamically (discovered at runtime) load subclasses of CustomeNode and at instances of these to the scene?
I'm trying to implement a GUI that displays data from third-parties. The idea is that third-party modules provide their own Node to be embedded into the main GUI.
regards
robert

It should be possible to do using URLClassLoader.
For example:
import java.net.URL;
import java.net.URLClassLoader;
import javafx.scene.Node;
import javafx.stage.Stage;
import javafx.scene.Scene;
var url = new URL("file:/C:/Temp/JavaFXApplication25/dist/JavaFXApplication25.jar");
var classLoader = new URLClassLoader([ url ]);
var cls = classLoader.loadClass("pack.UserNode");
var node = cls.newInstance() as Node;
Stage {
    title: "Application title"
    scene: Scene {
        width: 250
        height: 80
        content: [ node ]
}

Similar Messages

  • How to dynamically load images into Flash

    I have a movie clip on the stage that I want to dynamically
    load images into (that constantly change), how would I go about
    doing this? Thanks.

    Use the Loader class to load in images.
    Then use addChild to add the Loader class into your MovieClip
    on the stage.
    As far as "constantly change" what
    do you mean by that? You could use setInterval, ther enterFrame
    event, or any other means to trigger a new image to be loaded into
    the Loader instance.
    Finally, you can use the Tween class to create some nice
    effects for the images (fade it, blur in, photo blend, masks,
    etc)

  • How to dynamically load jar files - limiting scope to that thread

    Dynamically loading jar files has been discussed a lot. I have read a quite a few posts, articles, and demo code for doing just that. However, I have yet to find a solution to my problem. Most people modify their system class loader and are happy. I have done that and was happy for a time. Occasionally, you will see reference to an application server or tomcat or some other large project that have successfully been able to load and unload jar files, allow for dynamic deployment of code, etc. However, I have not been able to achieve similar success; And my problem is much less complicated.
    I have an application that executes a thread to send a given file/message to a standard JMS Server Queue. Depending on the parameters selected by the user, this thread may need to communicate with one of a number of JMS Servers, ie. JBoss, WebLogic, EAServer, Glassfish, etc. All of which can be done with the same code, but each needs to load their own flavor of JMS Client Jar files. In this instance, spawning a separate JVM for each communication would work from a classloader perspective. However, I need to keep it in the family and run under the same JVM, albeit each JMS Server Connection will be created and maintained in separate Threads.
    I am close, I am doing the following...
    1. Creating a new URLClassLoader in the run() method of each thread.
    2. Set this threads contextClassLoader to the new URLClassLoader.
    3. Load the javax.jms.JMSException class with the URLClassLoader.loadClass() method.
    4. Create an initialContext object within this thread.
    Note: I read that the initialContext and subsequent conext lookup calls would use the Thread�s
    contextClassLoader for finding/loading classes.
    5. Perform context.lookup calls for a connectionFactory and Queue name.
    6. Create JMS Connection, etc. Send Message.
    Most of this seems to work. However, I am still getting a NoClassDefFoundError exception for the javax.jms.JMSException class ( Note step #3 - tried to cure unsuccessfully).
    If I include one of the JMS Client jar files ( ie wljmsclient.jar for weblogic ) in the classpath then it works for all the different JMS Servers, but I do not have confidence that each of the providers implemented these classes that now resolve the same way. It may work for now, but, I believe I am just lucky.
    Can anyone shine some light on this for me and all the others who have wanted to dynamically load classes/jar files on a per Thread basis?

    Thanks to everyone - I got it working!
    First, BenSchulz' s dumpClassLoader() method helped me to visualize the classLoader hierarchy. I am still not completely sure I understand why my initial class was always found by the systemClassLoader, but knowning that - was the step I needed to find the solution.
    Second, kdgregory suggested that I use a "glue class". I thought that I already was using a "glue class" because I did not have any JMSClient specific classes exposed to the rest of the application. They were all handled by my QueueAdmin class. However...
    The real problem turned out to be that my two isolating classes (the parent "MessageSender", and the child "QueueAdmin") were contained within the same jar file that was included in the classpath. This meant that no matter what I did the classes were loaded by the systemClassLoader. Isolating them in classes was just the first step. I had to remove them from my jar file and create another jar file just for those JMSClient specific classes. Then this jar file was only included int custom classLoader that I created when I wanted to instantiate a JMSClient session.
    I had to create an interface in the primary jar file that could be loaded by the systemClassLoader to provide the stubs for the individual methods that I needed to call in the MessageSender/QueueAdmin Classes. These JMSClient specific classes had to implement the interface so as to provide a relationship between the systemClassLoader classes and the custom classLoader classes.
    Finally, when I loaded and instantiated the JMSClient specific classes with the custom classLoader I had to cast them to the interface class in order to make the method calls necessary to send the messages to the individual JMS Servers.
    psuedu code/concept ....
    Primary Jar File   -  Included in ClassPath                                                      
    Class<?> cls = ClassLoader.loadClass( "JMSClient.MessageSender" )
    JMSClientInterface jmsClient = (JMSClientInterface) cls.newInstance()                            
    jmsClient.sendMessage()                                                                      
    JMSClient Jar File  -  Loaded by Custom ClassLoader Only
    MessageSender impliments Primary.JMSClientInterface{
        sendMessage() {
            Class<?> cls=ClassLoader.loadClass( "JMSClient.QueueAdmin" )
            QueueAdmin queueAdmin=(QueueAdmin) cls.newInstance()
            queueAdmin.JMSClientSpecificMethod()
        }

  • How to dynamically load data from DB in an HTML control present in jsp

    Hi Friends,
    Can anyone help me with this problem:
    I am working on a portal application. My requirement is to dynamically load data in an HTML control present in my JSPs. The controls are combo-boxes, text-fields, list-boxes etc. . Also, the events to load the data are like On Form load, On selecting a value from the combo-box, on clicking on a text-field etc.
    If any one can help me with a code snippet, than that would be highly appreciable. If not then the approach to achieve this will also be helpful.
    Thanks and Regards,
    Gaive.

    Refer
    http://www.developer.com/db/article.php/3384201
    http://www.developer.com/db/article.php/10920_3399331_1

  • How to dynamically load static (inner) class

    I have an urgnent question, any comments would be appricated.
    I have a static inner class definition.
    Class myObject
    public static class innerObject
    I want to dynamically load the static innerObject class such as
    Class c = Class.forName ( "myObject.innerObject" );
    innerObject t = ( innerObject ) c.newInstance();
    I can't do this as it give me ClassNotFound Exception, Do I need to load myObject first? any comments?
    The other alternative is that to define my myObject as having a static variable referencing the static class.
    Class myObject
    staic innerObject m_inner = new innerObject();
    public static class innerObject
    Is there any option in java allowing me to load a static variable?
    Many thanks
    Jay

    I can't do this as it give me ClassNotFound Exception,Use "myObject$innerObject" instead of "myObject.innerObject".
    Is there any option in java allowing me to load a
    static variable?What do you mean by that?

  • How to Dynamically Load jvm.dll without setting PATH

    Please help, invoking CreateJavaVM via a function pointer is returning -3, but I'm not sure why.
    When my PATH is setup up to include the jvm.dll and I invoke JNI_CreateJavaVM() directly, it works fine. But I want it to work regardless of my PATH setting, so I am trying to use LoadLibrary and dynamically load the jvm.dll and then a function pointer to invoke CreateJavaVM().
    The LoadLibrary returns non-NULL result, the GetProcAccress() returns non-null, but when I invoke the pointer to the CreateJavaVM call, it returns -3. I know -3 is JNI_EVERSION error, but any ideas what is wrong with the code below, such that it would give me this error?
    Currently my code is as follows:
    typedef jint (JNICALL CreateJavaVM_t)(JavaVM **pvm, void **env, void *args);
    JavaVM *m_jvm;
    JNIEnv *m_env;
    SetDllDirectory(L"C:\\Program Files\\Java\\jdk1.6.0_20\\jre\\bin\\client");
    HINSTANCE hVM = LoadLibrary(L"jvm.dll");
    if ( hVM == NULL ) {
       // report error
    CreateJavaVM_t *pfnCreateJavaVM = (CreateJavaVM_t*)GetProcAddress(hVM, "JNI_CreateJavaVM");
    #ifdef JNI_VERSION_1_6
    char cpChars[1024] = {0};
    sprintf_s(cpChars, "-Djava.class.path=%s", classPath); // classpath is defined elsewhere
    JavaVMOption options[1];
    options[0].optionString = cpChars;
    JavaVMInitArgs vm_args;
    vm_args.version = JNI_VERSION_1_6;
    vm_args.options = options;
    vm_args.nOptions = 1;
    vm_args.ignoreUnrecognized = JNI_TRUE;
    pin_ptr<JNIEnv*> env = &m_env;
    pin_ptr<JavaVM*> jvm = &m_jvm;
    int result = pfnCreateJavaVM(jvm, (void**)env, &vm_args);
    // This is where the failure occurs. result is -3 for some reason here...why?For some reason, pfnCreateJavaVM is returning -3, but I'm not sure why? Any ideas what is wrong with this code, such that it would give me a -3?
    Thanks in advance,
    Bill

    wkoscho wrote:
    For some reason, pfnCreateJavaVM is returning -3, but I'm not sure why? Any ideas what is wrong with this code, such that it would give me a -3?As an experiment try using a different jvm.dll from a different location. From my box there are several different jvm.dll under my jdk install dir.

  • How to dynamically load any number of VIs and spawn a new thread for each

    Hi,
    I'm trying to spawn several TCP listening threads, the number of which is dynamic based upon a configuration file which is read at runtime. With with the included code, I am attempting to open and call these listening threads from a for loop, thinking I could run through all the calls I need to make and be finished. However, since the subVI I'm calling (wait_for_and_process_messages.vi) runs a continuous while loop, the for loop in the parent VI does not continue as it is waiting for the first call to finish. 
    How can I design this to simply spawn off a thread each time I call the subVI and continue? The idea is to allow the number of threads be dynamic so it is not so easy compared to knowing the number of needed threads ahead of time. However, I do need to feed data to each call's nodes so I can't just use the "run" method unless there's a way to feed data to the nodes while using "run."
    Attachments:
    database_communicator.vi ‏12 KB

    Check out this Nugget.
    It contains code that should help you get started.
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • How to dynamically add Nodes to JTree?

    How to add nodes to a Jtree by getting the information into a specific file
    For example, in JList:
    DefaultListModel workgroups;
    workgroups = new DefaultListModel();
    List<String> workgroupsList = new ArrayList<String>();
    workgroupsList = ParserUtils.getWorkgroupList(ParserUtils.getConfigPath() + "\\.workgroup.properties");
    if (!workgroupsList.isEmpty()){
         for (String workgroup : workgroupsList){
              workgroups.addElement(workgroup.toString().trim());
    workgroupList = new JList(workgroups); //adds the list workgroupsThe output of this will be a JList displaying the list of workgroups per line. The list could be found in a file name "workgroup.properties"
    Question is, is it possible to adapt this same method in JTree. The information per line will serve as one node in the tree. For example, I have 3 workgroups in the list, there will also be 3 nodes to be found in the tree.
    Any suggestions?
    THanks.

    There's a huge JTree example in the Swing tutorial. It's a bit of a beast to use.

  • How to dynamically load a Base64 string to an image on the Crystal Report?

    I have a signature stored in my SQL Server 2008 DB as a Base64 encoded string. It is in a datatype of nvarchar(MAX), field named ="signature_stream"
    I am using Crystal Reports Basic for Visual Studio 2008.a XML field definition file to load the data to the report.  In that file [signature_stream] is a xs:string type.  This is a asp.net application so ideally I would like not to have to save the image to disk before showing it.
    I need to be able to take [signature_stream] and load it onto my report from server side code. 
    Any help would greatly be appreciated.

    Hi Jimmy,
    CR is a 32 bit app so it won't be able to handle an image in x64 format unless you find a way to convert it to x86 type.
    The MS SQL client may be able to do this for you though. Install the SQL Native 10 client from the MS SQL Tools menu options and then convert/update the report and DSN to use the SQLNCLI10.dll as the client dll.
    See if you can add that field to the report, if that works then you can add any image to the report and set the image formula to that database field using the Formula field:
    click the X-2 button for graphic location and select the field with the image in it.
    Now preview, if the Client converts 64 to 32 bit then this should work for you, if not then only option is as Dell pointed out and save the image to the HD in BMP or JPG format and then you can use the same Graphic Location formula to point to the folder and file location.
    To update it in code it would look like this in the KBase article:
    2021348 - Modifying a Picture object in .NET ignores Object.Height and Object.Width when setting Condition Formula Can Grow is enabled
    Symptom
    When modifying an existing picture object and using a formula to update the image file location and name using the .Modify() method the image is not sizing accordingly.
    Environment
    Crystal Reports for Visual Studio
    VS 2010
    VS 2012
    VS 2013
    Resolution
    You can do this all dynamically and creatively as you wish but the basics to updating the image is as follows:
    CrystalDecisions.ReportAppServer.ReportDefModel.PictureObject boPictureObject = new CrystalDecisions.ReportAppServer.ReportDefModel.PictureObject(); ;
    string strNewImageFilename = "D:\\Atest\\DSC_2655.jpg";
    foreach (CrystalDecisions.ReportAppServer.ReportDefModel.ReportObject oReportObject in objects)
        if (oReportObject.Kind == CrystalDecisions.ReportAppServer.ReportDefModel.CrReportObjectKindEnum.crReportObjectKindPicture)
            var oPlaceholderPicture = oReportObject as CrystalDecisions.ReportAppServer.ReportDefModel.PictureObject;
            if (oPlaceholderPicture != null)
                    // clone the original object so it can be modified
                    var oNewPicture = (CrystalDecisions.ReportAppServer.ReportDefModel.PictureObject)oPlaceholderPicture.Clone(true);
                    var cf = new CrystalDecisions.ReportAppServer.ReportDefModel.ConditionFormula();
                    PicFileLocationFormula.Text = "\"" + strNewImageFilename + "\"";
                    oNewPicture.Format.EnableCanGrow = false;
                    oNewPicture.GraphicLocationFormula = PicFileLocationFormula;
                    oNewPicture.Width = 4320;  // 3 inches
                    oNewPicture.Height = 1440;  // 1 inch
                    rptClientDoc.ReportDefController.ReportObjectController.Modify( oPlaceholderPicture, oNewPicture );
                    // Call the Modify again to update the CanGrow flag to false - default is set to True
                    oNewPicture.Format.EnableCanGrow = false;
                    rptClientDoc.ReportDefController.ReportObjectController.Modify(oPlaceholderPicture, oNewPicture);
    This issue has been tracked with ADAPT01727457 and scheduled for SP 11 ( possibly SP 10 )
    In the mean time use the above work around
    Don

  • How to dynamically load an Image into a TableView when its row/cell becomes visible?

    Hi,
    I am building an application that shows tables with large amounts of data containing columns that should display a thumbnail. However, this thumbnail is supposed to be loaded in the background lazily, when a row becomes visible because it is computationally too expensive to to this when the model data is loaded and typically not necessary to retrieve the thumbnail for all data that is in the table.
    I have done the exact same thing in the past in a Swing application by doing this:
    Whenever the model has changed or the vertical scrollbar has moved:
    - Render a placeholder image in the custom cell renderer for this JTable if no image is available in the model object representing the corresponding row
    - Compute the visible rows by using getVisibleRect and rowAtPoint methods in JTable
    - Start a background thread that retrieves the image for the given rows and sets the resulting BufferedImage in a custom Model Object that was used in the TableModel (if not already there because of an earlier run)
    - Fire a corresponding model change event in the EDT whenever an image has been retrieved in the background thread so the row is rendered again
    Btw. the field in the model class holding the BufferedImage was a weak reference in this case so the memory can be reclaimed as needed by the application.
    What is the best way to achieve this behaviour using a JFX TableView? I have so far failed to find anything in the API to retrieve the visible items/rows. Is there a completely different approach available/required that uses the Cell API? I fail to see it so far.
    Thanks in advance for any hints here.

    Here’s what I have tried so far:
    I have defined a property in my model object that contains a weak reference to the image that is expensive to load. I have modeled that reference as an inner class to the object so I have a reference to its enclosing object. That is necessary because my cell factory otherwise has no access to the enclosing model object, which it needs to trigger loading the image in the background.
    The remaining problems I have is, that I don’t have sufficient control over the loading process, i.e. I need to delay the loading process until scrolling has stopped and abort it as soon as the user starts scrolling again and the visible content changes. Imagine that loading an image for a table row (e.g. a thumbnail for a video) takes 200ms to load and a user quickly scrolls through a few hundred records and then stops. With my current set-up, the user has to wait for all loading processes that were triggered in the cell factories to finish until the thumbnails of the records they are looking at will appear (imagine an application like finder to be implemented like that, it would simply suck UX-wise). In my swing application a background thread that loads images for the visible records is triggered with a delay and stopped as soon as the visible content changes. This works well enough for a good user experience. I don’t see how I can do this based on the cell API. It is nice to have all this abstracted away but in this case I do not see how I can achieve the same user experience as in my swing application.
    I also tried registering a change listener to the TreeCell’s visible property to make that control the image loading but I don’t seem to get any change events at all when I do that.
    I must be missing something.

  • How To Dynamically Load Images in Crystal Reports?

    Post Author: philips
    CA Forum: General
    What I want is to have image files saved on a local drive and the images to be loaded into a picute/image frame based on a certain condition - same way it's (easily) done with VB.Net or ASP.Net image objects.
    Can you help?

    Not in Crystal Reports Basic for Visual Studio 2008. You'll have to upgrade to CR 2008 (12.x). Then use kbase [1320507|http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes_boj/sdn_oss_boj_erq/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/scn_bosap/notes.do] as a guide on how to do this.
    Ludek

  • Dynamically load Vi from LLB

    Hey all!
    I looked up the forumfor an answer but couldn't find the answer... I was wondering how to dynamically load a Vi from an LLB by just using a path.  Is this possible?
    Thanks in advance
    Yohan

    Hi NahoY,
    you can get the path of files using this:
    Greets, Dave
    Message Edited by daveTW on 06-05-2006 08:32 PM
    Greets, Dave
    Attachments:
    Get Path.png ‏8 KB

  • Dynamically load different versions of client jar

    Hello,
    My application needs to simultaneously support different versions of an RMI app. How to dynamically load the proper version of the client jar to connect with the same version of the server. Say Server versions are sv1.0, sv 1.1, sv 2.0 and clients are cl1.0, cl1.1, cl2.0. How to dyncamically load cl1.0 in my application so as to connect with sv1.0, similarly cl1.1 with sv1.1
    Will having a different classloader for each of the client jars, solve the problem?
    Can someone direct me/suggest on how to handle this.
    I appreciate your help and thanks for your time.

    Try this link if you want to see how browser based help will look on MACs and Apple hardware.
    http://www.grainge.org/demos/bbair/
    Your developers would need to create a sniffer to ascertain the OS of the user's device and then route to the required help. That is not built into RoboHelp and RoboHelp Server will not assist with this one.
    See www.grainge.org for RoboHelp and Authoring tips
    @petergrainge

  • Dynamically loading the MathScript Node

    Hi - Is it possible to dynamically load script into the Mathscript Node at Run time. I see that you can use define functions and paths and things . But being a newbie to Mathscript could all this hang together to make dynamic loading a possibility and how?
    thanks dht 

    Hi,
      unfortunately the node doesn't support run-time dynamic loading of scripts. You can load variable values with the load function, but not scripts.
    http://zone.ni.com/reference/en-XX/help/371361A-01/lvtextmath/msfunc_load/
    http://zone.ni.com/reference/en-XX/help/371361A-01/lvhowto/saving_loading_scripts/
    Depending on your application, you could use a case statement to decide between several pre-built (and possibly compiled) mathscript nodes, and acheive the functionality that way.
    Another option might be to use the formula vi's instead, although this will require a more complex architecture to parse the text file you'd generate.
    For more information on MathScript, please see the following link
    http://zone.ni.com/devzone/devzoneweb.nsf/Opendoc?openagent&568C773718B080F286257096005BD314
    Hope that helps
    Sacha Emery
    National Instruments (UK)
    // it takes almost no time to rate an answer

  • How can you display a dynamically loaded vi to the Web Server?

    I am working with LabView 6.1 and the Web Server. I can call a subvi and have it display on a remote machine using a browser with no problem. But what I would like to do is dynamically load and run a vi and have it display on the remote computer using only a browser. I have tried a small example of a front panel that invokes the run vi method (and fp.open prop) on another vi when a button is pressed, but the invoked vi is displayed only on the local computer. Is there any way of viewing dynamically loaded vi's on a remote machine without having a copy of LabView running on it?

    If i understand your question correctly, you want to monitor vi that are dynamically loaded on a remote machine without having LabVIEW installed on the machine from witch you want the monitor. I don't think it's possible how ever a good reference book would be Internet applications in LabVIEW. You can find it on BARNES&NOBLE.
    Hope i could help

Maybe you are looking for

  • How to update a 3d model in PS

    How do I replace a 3D model in PS without losing the current environment settings? I am wishing to employ the same workflow as updating a smart object. Is that an option?

  • How could I route 20 channals via a PXI-2501 to ch0 on a PXI-4472

    I would like to use a PXI-4472 card to scan 20 signals. For this purpose I have a PXI-2501 which can be used to multiplex the 20 signals to, say, ch0 on the PXI-4472. I would like to know how can I scan each channel with a sampling freq of 1000S/s? I

  • Is it possible to adjust the size of the columnes when send alv by mail  ?

    is it possible to adjust the size of the columns when send alv by mail  ? i send alv ( list ) by mail  , work fine but all the columns are small and in the same size , can i adjust it in the mail   ? how to do it in regular alv i know it  . LS_FCAT-O

  • SelectAll works once, and not twice

    I'm attempting to have two text fields and two input buttons. The lower text field and lower button start out disabled, and all the text in the first text field starts out selected. After the first button is pressed, the first text field and that but

  • Display SQL generated by Entity CMP Bean - WebLogic 9

    All: How can I display the actual SQL which CMP Entity beans are generating and running against the database? I am running WebLogic Server 9.2