How to implement a UI similar to a UML Diagram with connections?

I'm working on an App that has a hierarchy of nodes and connections between them (Similar to Visio, a UML diagram, or Netbeans Visual Library). The nodes can be moved around, connections between nodes are maintained, etc.
The hierarchy of nodes is easily mimicked as JavaFX Nodes in the scene graph. Implementing the UI for the connections however has proved to be trickier. Here are 2 issues I'm trying to solve:
1) Connections need to track the positioning of their 'endpoint' nodes. Let's say a connection is an arrow connecting 2 arbitrary nodes in the hierarchy. The connection is itself a JavaFX node but in a different parent than the endpoint nodes. There doesn't seem to be a way to be notified that the endpoint nodes' location in the scene has changed, only their local bounds. Because there could be a whole sub-hierarchy of nodes being moved at a time, the connections need to reposition themselves whenever one of its endpoint nodes move in the scene (or should I say - move with respect to the common 'root' pane of the nodes and connections). Any ideas on how to implement this would be appreciated!
2) I wanted the connections to 'float' independent of the nodes. I thought the StackPane would be ideal, (back pane for nodes, front pane for connections), however, the front pane "steals" all the mouse events from the back pane! There's an almost useful method called 'setMouseTransparent', but it applies to a Node AND all of its children. Thus calling this on the front pane means the Connections no longer get mouse clicks. Blah... am I missing something here? Why isn't there a setMouseTransparent() method that doesn't apply to the children? I'd like the connections (thin lines using 'Path') to get mouse events, and otherwise nodes in the back plane should get them.
As a workaround to 2, I bailed on StackPane and use a regular Pane to hold both the nodes and connections. But I need to ensure the connections are always at the 'end' of the list of children... But that's an ugly solution. I feel like either I or JavaFX am missing something here.
Thanks for any suggestions,
Craig

So you need to update the connections between nodes when the nodes are moved around?
But because the connections aren't in the same immediate parent as the nodes they are in a different "local" coordinate space... you want to somehow listen to a node's location in terms of the scene coordinates? So even though the nodes local coordinates remain the same the node moves because it's parent moves and there is now way to observe that directly. Is that right.

Similar Messages

  • How to implement the schema validation with XSD in adapter module

    Dear All,
    I am trying to develop a EJB as the file adapter mudule.
    Please guide me how to implement the schema validation of the source message with XSD.
    Or provide me the relative resources about this task.
    Thanks & Regards,
    Red
    Edited by: Grace Chien on Nov 19, 2008 8:23 AM

    Hi Grace,
    You can do the xml scema validation in PI7.1 version directly.
    To develop the adapter module for xml schema validation
    Validating messages in XI using XML Schema
    Schema Validation of Incoming Message
    Regards
    Goli Sridhar

  • How to implement redundant with 1 CE router to 2 MPLS service providers

    Dear all,
    Our head-office are currently have 1 Cisco CPE 3825 router with 2 WAN connections to our branches. We are now using static routing protocol in our network infrastructure, we consider how to implement the redundancy for networks by the redundant circuits connection to 2 MPLS providers, only when the primary connection to the primary MPLS L3 provider fail, the backup link to the second MPLS Layer 2 provider automatically active. Anybody knows where can I find information, tips or examples, how we'd handle the routing for that?
    We are now have:
    1 G0/1 interface connect to primary MPLS L3 Provider (the 2nd G0/2 interface is a leased-line connection to our partner, and we not consider here)
    1 HWIC (layer 2) card, with 4 ports, which has interface F0/2/3 connected to the backup MPLS Layer 2 provider.
    Thanks in advance.
    PS: Current configuration : 3727 bytes
    version 12.3
    service timestamps debug datetime msec
    service timestamps log datetime msec
    service password-encryption
    hostname Router
    boot-start-marker
    boot system flash c3825-entservicesk9-mz.123-11.T7.bin
    boot-end-marker
    logging buffered 4096 debugging
    logging monitor xml
    no aaa new-model
    ip subnet-zero
    ip cef
    no ftp-server write-enable
    no spanning-tree vlan 4
    no spanning-tree vlan 5
    interface GigabitEthernet0/1
    description connect to VDC MPLS$ETH-WAN$
    mtu 1480
    ip address 222.x.x.66 255.255.255.252
    ip flow ingress
    ip flow egress
    service-policy output SDM-QoS-Policy-1
    ip route-cache flow
    duplex auto
    speed auto
    media-type rj45
    fair-queue 64 256 256
    no cdp enable
    interface FastEthernet0/2/0
    switchport access vlan 2
    no cdp enable
    interface FastEthernet0/2/3
    description ToTBToverFPT
    switchport access vlan 5
    no cdp enable
    interface Vlan2
    description CONNECT TO MPLS_VDC
    ip address 192.168.201.9 255.255.248.0
    interface Vlan5
    description Connect to HoChiMinhCity
    ip address 172.16.1.5 255.255.255.252
    ip classless
    ip route 0.0.0.0 0.0.0.0 Dialer1
    ip route 172.16.244.0 255.255.255.0 222.255.33.65
    ip route 192.168.0.0 255.255.248.0 222.255.33.65
    ip route 192.168.24.0 255.255.254.0 222.255.33.65
    ip route 192.168.30.0 255.255.254.0 222.255.33.65
    ip route 192.168.32.0 255.255.254.0 222.255.33.65
    ip route 222.x.x.68 255.255.255.252 222.255.33.65
    ip route 222.255.33.72 255.255.255.252 222.255.33.65
    ip route 222.x.x.196 255.255.255.252 222.255.33.65
    ip route 222.x.x.200 255.255.255.252 222.255.33.65
    ip http server
    ip http authentication local
    no ip http secure-server
    ip http max-connections 3
    control-plane
    line con 0
    logging synchronous
    stopbits 1
    line aux 0
    stopbits 1
    line vty 0 4
    password
    login
    transport input telnet
    line vty 5 14
    privilege level 15
    password
    login
    transport input telnet
    line vty 15
    privilege level 15
    password
    login
    transport input telnet
    parser view SDM_Monitor
    scheduler allocate 20000 1000
    end

    Hi Mr jianqu,
    Because of our customer now has 2 main central offices, and all other sub branches are now connected to each of these main central office via one primary full-meshed MPLS VPN of 1st Service Provider, so If I use the float static routes, and when there is a failure at one link at a CENTRAL CE Router to primary link to primary MPLS VPN Service Provider, but still there is no failure at the other site from a router CE sub branch with the the PE of the primary full-meshed MPLS VPN Layer 3 Service Provider,so It cannot cause a failover to a second redundant link of the 2nd Service Provider?
    So with our system, do we only have one solution like this:
    -Configure BGP as the routing protocol between the CE and the PE routers.
    -Use local preference and Multi Exit Discriminator (MED) when running BGP inside a our customer VPN to select the primary and backup links.
    -Use AS-override feature to support overlapping AS numbers between customer sites

  • How to implement tooltip for the list items for the particular column in sharepoint 2013

    Hi,
    I had created a list, How to implement tooltip for the list items for the particular column in SharePoint 2013.
    Any help will be appreciated

    We can use JavaScript or JQuery to show the tooltips. Refer to the following similar thread.
    http://social.technet.microsoft.com/forums/en/sharepointdevelopmentprevious/thread/1dac3ae0-c9ce-419d-b6dd-08dd48284324
    http://stackoverflow.com/questions/3366515/small-description-window-on-mouse-hover-on-hyperlink
    http://spjsblog.com/2012/02/12/list-view-preview-item-on-hover-sharepoint-2010/

  • How to implement complex analysis authorizations in simple way

    Hi All,
    I need to create some analysis authorizations with long list of single values for a characteristics. For example, we have multiple set up of company codes (APAC, EAME, AMERICAS, etc) and each set contains 150 - 200 company codes in it. Now we have multiple combinations of company code set and geographies. In short, we will have multiple analysis authorizations and each will have one or two set of company codes and some geographies.
    I can create the analysis authorizations for the first time, by putting individual values in the respective characteristics. That would be a big task but can be done. But the problem is about ongoing maintenance. In future, if a new company code is added to lets say APAC companies, then we will have to update all analysis authorizations which contains APAC company code and that would be huge number of AAs due to the complexity of business architecture.
    Could anyone please suggest if it is possbile (and how) to do below or similar, or have any other better approach (using BW7.4)
    - We would create a group (or set) of company codes. Lets say would create a group APAC_Comp_Code and add all APAC related company codes in it. This would be repeated for all set of compant codes.
    - While creating analysis authorizatons, I would not assign any individual company code value in characteristic, instead put APA_Comp_Code inside the characteristic 0COMP_CODE.
    - If I need to put multiple set of company codes inside 0COMP_CODE, I will just put the corresponding group name, not the invidual values.
    The benefit would be that in future if I need to add a new company code to APAC, I would just have to update this group APAC_Comp_Code. I will not have to maintain the analysis authorizations.
    Please let me know if this is possible or if there is any other way to implement the requirement with simpler maintenance.
    Thanks
    Nitesh Gupta

    Hi Nitesh,
    From what you describe, this would be a good case to use variables in your analysis authorisations. You can specify a variable value for the BUKRS field and have a couple of options to populate the values which are picked up in the query execution.
    You will need to ensure that you activate the istep to read customer exit variables and have the query variable set as customer-exit. Once those are complete, you can create a custom table to maintain the mapping of groups to company codes, or to read the company codes directly from your ERP system (if you want to base authorisations on what the users can see in ERP) and populate the table with those values.
    However you populate the value to the variable, I think this approach will get you closer to minimal maintenance going forward. Enhancement RSR00001 should be implemented, some help documentation for this below
    http://help.sap.com/saphelp_nw70/helpdata/en/1d/ca10d858c2e949ba4a152c44f8128a/content.htm
    Hope this helps,
    Tom

  • How to implement parent entity for core data

    Hi there.
    I am starting a document-based Core Data application (Cocoa) and developed the following data model;
    The 'invoice' entity is a parent entity of 'items', because ideally I would want there to be many items for each invoice. I guess my first point here is - is what I am trying to do going to be achieved using this method?
    If so, I have been trying several ways in Interface Builder to sort out how to implement this structure with cocoa bindings. I have made a Core Data app before, just with one entity. So this time, I have two separate instances of NSArrayController's connected to tables with relevant columns. I can add new 'invoice' entities fine, but I can't get corresponding 'items' to add.
    I tried setting the Managed Object Context of the 'item' NSArrayController to this;
    I thought this would resolve the issue, but I still have found no resolution to the problem.
    If anyone done something similar to this, I'd appreciate any help
    Thanks in advance,
    Ricky.

    Second, when you create a Core Data Document Based application, XCode generates the MyDocument class, derivating from NSPersistentDocument. This class is dedicated to maintain the Managed Object Model and the Managed Object Context of each document of your application.
    There is only one Context and generally one Model for each Document.
    In Interface Builder, the Managed Object Context must be bound to the managedObjectContext of the MyDocument instance: it's the File's owner of the myDocument.xib Nib file.
    It's not the case in your Nib File where the Managed Object Context is bound to the invoiceID of the Invoice Controller.
    It's difficult to help you without an overall knowledge of your application, perhaps could you create an InvoiceItem Controller and bind its Content Set to the relationship of your invoice.

  • How to implement bar code in Unix environment - EBS 11.5.8 ?

    Hi All,
    I need to implement bar codes in an AR Invoice in Unix environment. I have barcode.pfa that is the font file. Is the equivalent file from ttf file in windows environment.
    I have read different papers in metalink that say that for example the name of the directory is this /usr/lib/X11/fonts/type1, but in my AIX server I haven't found something similar like this.
    I wrote this statement in order to find the directory but I didn't find it.
    find . -name fonts -print (fonts is the name of the directory)
    Can you help me?
    Best Regards,
    Mariano.-

    Hi Hussein,
    I've read Note: 466531.1 - How To Implement An AFM / PFA Barcode or MICR Font Within A UTF8 EBS Instance. It says that I have to
    copy the Barcode.pfa to the ORACLE_HOME directory. However, in this directory I don't have another pfa or ttf file, so how can unix relate the font?
    Best Regards,
    Mariano.-

  • How to implement a conversion rule in KC7R (External Data transfer-Tool)

    Hi,
    I am familiar with programming conversion rules in ABAP in the LSMW and IS-U Migration workbench.
    Unfortunately we have to work with EDT (transaction KCLJ).
    I need to implement a simple conversion rule: migration file has the external BP number BPEXT and I must retrieve the internalone (PARTNER) for the migration program.
    So I must implement a short ABAP code (select single * from BUT000 ...).
    Now I see that in KC7R you can use constants and conversion rules. There are also "General Ruels" and "conversion routines".
    Can someone explain how to implement this simple ABAP conversion rule in KC7R giving a short example?
    This would be great.
    EDT is the workst of all SAP Standard Migration Tools I have seen.....
    Kind regards,
    Thomas

    Thomas,
    Coud you please share your findings as I am now in a similar to your original post.
    ie I too would like to know how to code convesions for use within the transfer rules used by KCLJ.
    Kind Regards,
    Hiten Mistry.

  • How to implement a foreach cycle through Office 365 Calendar appointments?

    Hi everyone,
    I am looking for a way to implement a foreach cycle that is better than what I could create already, so I would like to have your feedback.
    Basically, I have an Office365 Calendar and I want to count the number of appointments per day, so that I can show that in a line graphic. I was able to get the information but in a "not-so-elegant" way that I hope can be greatly optimized. The
    behavior I have now is the following: when I click a button, on the On Select statement I have:
    Collect(MeetingsCollection, Office365!Calendar(Text(Gallery1!Selected!Value+Today(),"UTC"), Text(Gallery1!Selected!Value+1+Today(),"UTC"))!count); Collect(MeetingsCollection, Office365!Calendar(Text(Gallery1!Selected!Value+1+Today(),"UTC"),
    Text(Gallery1!Selected!Value+2+Today(),"UTC"))!count); Collect(MeetingsCollection, Office365!Calendar(Text(Gallery1!Selected!Value+2+Today(),"UTC"), Text(Gallery1!Selected!Value+3+Today(),"UTC"))!count);
    Collect(MeetingsCollection, Office365!Calendar(Text(Gallery1!Selected!Value+3+Today(),"UTC"), Text(Gallery1!Selected!Value+4+Today(),"UTC"))!count); Collect(MeetingsCollection, Office365!Calendar(Text(Gallery1!Selected!Value+4+Today(),"UTC"),
    Text(Gallery1!Selected!Value+5+Today(),"UTC"))!count); Collect(MeetingsCollection, Office365!Calendar(Text(Gallery1!Selected!Value+5+Today(),"UTC"), Text(Gallery1!Selected!Value+6+Today(),"UTC"))!count);
    Collect(MeetingsCollection, Office365!Calendar(Text(Gallery1!Selected!Value+6+Today(),"UTC"), Text(Gallery1!Selected!Value+7+Today(),"UTC"))!count)
    I am collecting all the appointments 7 days from now, create a collection with 7 entries (each with the total number of appointments on a given day) and the use that collection as the source for the graph.
    Do you know how to implement something similar to a foreach cycle in this situation? I would like to be able to give a start date and an end date and for each day collect the result. How would you do this?
    Thanks a lot for your help and let me know if you need any clarification.
    Sérgio

    Hey Sergio,
    Thanks for posting! You don't necessarily have to collect this data, you can compute it directly in your chart's Items function. In order to maintain your button press functionality and date selection I did two things:
    1) Create an input box for the start date
    I set the Default property of this to be the current day in a short date time format: Text(Today(), DateTimeFormat!ShortDate)
    2) Create a button that updates a context variable, in this case the start date.
    The 'OnSelect' for this button is: UpdateContext({StartDate : DateValue(Text1!Text)})
    Then I built the chart by manually populating its Items with the following:
    [Office365!Calendar(Text(StartDate, "UTC"), Text(StartDate + 1, "UTC"))!count,
    Office365!Calendar(Text(StartDate + 1, "UTC"), Text(StartDate + 2, "UTC"))!count,
    Office365!Calendar(Text(StartDate + 2, "UTC"), Text(StartDate + 3, "UTC"))!count,
    Office365!Calendar(Text(StartDate + 3, "UTC"), Text(StartDate + 4, "UTC"))!count,
    Office365!Calendar(Text(StartDate + 4, "UTC"), Text(StartDate + 5, "UTC"))!count,
    Office365!Calendar(Text(StartDate + 5, "UTC"), Text(StartDate + 6, "UTC"))!count,
    Office365!Calendar(Text(StartDate + 6, "UTC"), Text(StartDate + 7, "UTC"))!count]
    As for computing a range of dates, that becomes a bit trickier (and much more complex). You can use the DateDiff function to get the offset between two dates, and the FirstN function on a Collection similar to the one that you built above containing
    366 Calendar queries to display only that number of days. Given a start date, this would allow you to limit the dates displayed by the DateDiff.
    There may be a simpler solution to this, but it's not coming to me. I'll give this some thought over night and see if I can come up with a solution that is a little more elegant.
    Thanks,
    Evan

  • How to implement a simple node-edge graph?

    Can any one give me some advice on how to implement a simple node-edge graph in a frame? Every node is a rectangle which can be moved by mouse, and every edge is a arc between two nodes.
    Should the node class extend JPanel, and the edge class extend Graphics? and so on?

    It is impossible to generate similar update from OWB.
    Does your table1 contain primary key columns? What is the number of rows in this table?
    The only working solution in this case - use table1 twice in mapping - as source and as target (with UPDATE operation),
    link these operators with primary key columns and specify matching by PK columns.
    Updated column link to Constant operator attribute.
    In this case OWB generate SQL like
    merge table1 a
    using table1 b
    on (a.pk_column=b.pk_column)
    when matched then update set column1=1
    Regards,
    Oleg

  • How to implement a filter

    Can anyone tell me how to implement a filter (like working sets filter in the project toolbar in Jdeveloper).

    I am developing an extension and want to implement a "Filter"(funnel shaped) with similar features which is present in the jdeveloper(project toolbar->working sets)

  • How to implement authorization at sales order/projects level?

    If we open a sales order in VA02 and then try to open the same sales order in another session in VA02, there will be a message that the sales order is being processed. 
    I wish to implement similar functionality in my application which consists of editable report. 
    I tried to debug the situation in VA02 case mentioned above, to know something more about it, but could not understand anything!
    I know that lock objects can be helpful in this, but in my case there can a be range of sales orders (and projects within a range of profit centers). 
    How to implement such a functionality?
    Edited by: Ankit Modi on Dec 30, 2009 10:54 AM
    Edited by: Ankit Modi on Dec 30, 2009 10:55 AM

    @ Max -
    Yes Max, but the problem is that I want the lock on many sales orders at a time.  Its like, there is a report in which many rows (for sales orders) are editable.  I want all those to be locked at a time. This will not work by Lock object, I believe...
    @ Soumya -
    Yes Soumya, but, as I explained above, I want a range of sales orders rather than a sales order in particular.  That will not work by lock object.  Right?

  • How to implement AI_Change_Parameter function?

    Hi, everyone, I just bought a NI 4472 DSA board, and want to enable IEPE excitation for a channel for connecting a ICP Accelerometer, but I do not have LabView, only use MATLAB, I don't know how to implement  AI_Change_Parameter function in the matlab? I know the devNum is 1 and chanNum is 2, then directly use this function {AI_Change_Parameter (1, 2, ND_DSA_EXCITATION, ND_ON) } in MATLAB, it does not work, could you please let me know what is the problem and how can I use this AI_Change_Parameter function?
    Another question: I checked here and found that the amplifier gain for this NI 4472 DAS board can NOT been adjusted, is that true? I just plan to amplify the signal before it goes to MATLAB.
    Thanks.

    Hi,
    In regards to your question on the amplifier gain, you are correct, there is only 1 range setting on the 4472.
    In regards to you question on programming Traditional NI-DAQ in Matlab, this shuold be handled on your post on the Multifunction DAQ forum to get the most help from other users with similar experience.
    Have a great day!
    Travis W

  • How to implement Rows Per Page Selector for a tabular form kind of report

    Hello,
    Can somebody please tell how to implement Rows Per Page Selector in a tabular form (updatable report)
    -- similar to what we can have in an Interactive report---
    Plz help me out.

    You have to create item text field or select list (in interactive report is select list, you can create static value for example 10, 15, 50 , 100,500,.....) . In the Tabular form you have to go Report Attributes, search Number of Rows (Item) and select your item. And thats all. If I help you please check CORRECT or Helpful.

  • How to Implement BW in IT Service Desk/IT Help Desk /IT Complain Surveillance Dept/IT Customer Support Dept?

    Hi
    If a organization have 200 to 300 daily complains of there IT equipment/Software/Network e.t.c.
    How to Implement BW in IT Service Desk/IT Help Desk /IT Complain Surveillance Dept/IT Customer Support Dept?
    Is there any standard DataSources/InfoObjects/DSOs/InfoCubes etc. available in SAP BI Content?

    Imran,
    The point I think was to ensure that you knew exactly what was required. A customer service desk can have many interpretations from a BI perspective.
    You could have :
    1. Operational reports - calls attended per shift , Average number of calls per person , Seasonality in the calls coming in etc
    2. Analytic views - Utilization of resources , Average call time and trending , customer satisfaction , average wait time
    3. Strategic - Call volumes corresponding to campaigns etc , Employee churn and related call times
    Based on these you would then have to construct your models which would be populated by data from the MySQL instance for you to report.
    Else if you have BWA you could have data discovery instead or if you have HANA - you could do even more and if you have a HANA sidecar - you technically dont need BW. The possibilities are virtually endless - it depends on how you want to drive it and how the end user ( client ) sees value in the same.

Maybe you are looking for