Seamless network of nodes

  • Alexander Shapiro

    I would like the link browser applet to be able to link to non-local xml files.  This would form a seamless network of nodes, where graphs from multiple servers could be linked together into one large graph.  Currently, new xml files are displayed separately, but eventually I could have them be displayed in the same plane as the original, perhaps surrounded by a bubble.

    To form this network, I need a proxy servlet that would trick the java applet into believing that it was retrieving local files, while it was really retrieving remote ones.  All the servlet would need to do, is to retrieve the xml file specified without changing it in any way.  Does anyone know if the code for such a servlet is publicly availiable, or is it so trivial that it could be written with a couple of lines of code?

    Another nice feature would be to have this servlet work on a PC.  This way if someone downloaded the applet, and wanted to run it locally, the servlet would provide it's tricking effect here as well.


    • Stephen Danic

      Stephen Danic - 2001-07-10

      I've seen this done with php and perl. I personally don't have much java experience, but it's probably not much different.

      Open a socket to port 80, read a remote file, parse it (if required), and store it locally or play it back to the applet directly.

      However, if you try to make all touchgraph xml files appear as one big file, you may run into problems with infinitely big files due to loops and recursion.

      A good place to look for that type of code is web-based translators, filters and annotators. is a good place to look.

      Here's some php code from Lucid to grab a page from dmoz and pretend it's from memes:
      $remoteResult = fopen("".urlencode($searchfor),'r');
                  if ($remoteResult > 0) { // file opened succesfully
                      $sitename = "";
                      while (!feof($remoteResult)) { // do this until reaching the end of file
                          $urlpacket = fgets($remoteResult, 4096);
                          $urlpacket = str_replace("","",$urlpacket);
                          $urlpacket = str_replace("A HREF=/","A HREF=$sitename/",$urlpacket);
                          $urlpacket = str_replace("a href=/","A HREF=$sitename/",$urlpacket);
                          $urlpacket = str_replace("src=/","src=$sitename/",$urlpacket);
                          $urlpacket = str_replace("SRC=/","src=$sitename/",$urlpacket);
                          $urlpacket = str_replace("SRC=\"/","src=\"$sitename/",$urlpacket);
                          $urlpacket = str_replace("ACTION=\"","action=\"$sitename",$urlpacket);
                          $urlpacket = str_replace("action=\"","action=\"$sitename",$urlpacket);
                          $longList .= $urlpacket;
                          $shortList .= $urlpacket;


    • Architexturez Researchers

      we will be attempting this very soon. and could post a "plug in" to TG if you think it all right.

      • Alexander Shapiro

        Excellent, I'm glad that you're planning to use the code, and would definitely appreciate any plug-ins you send back.

        However, I am not exactly sure what you are referring to:

        1.  A proxy servlet that would trick the java applet into believing that it was retrieving local files 
        ***This was already done by Victor Volle, and is included in the LinkBrowser source code.

        2. Another nice feature would be to have this servlet work on a PC.
        ***Hasn't been done.  A work-around is to run the link browser as an executable, but then it needs to be able to open remote browser windows.

        3.  Currently, new xml files are displayed separately, but eventually they could be displayed in the same plane as the original, perhaps surrounded by a bubble.
        ***This would be awesome. (Especially if done well) I hope that's what you are talking about.


        Regardless, I wish you well.  CVS has the latest files, and I try to make sure that the 'build' is never broken.


        • Alexander Shapiro

          To see what is meant by #3, See the Remote XML in the same pane thread.

    • Architexturez Researchers


      we haven't really decided the specifics yet, so everybody could perhaps suggest their needs and wishes, and we could try and build some of those into our app in a re0useable way.


      • Alexander Shapiro

        Well, writing about option #2, made me think that something that would immediately be a big benefit to the application, is if it could be run as an executable.

        As mentioned, this would require displaying html in a remote browser window.  I haven't investigated this issue, but I am sure that a leap in usability (and complexity) would be if this could be done in a platform independant way.

        Running the application as an executable would allow direct loading and saving of XML, which would be a big improvement over the current method of cutting and pasting into the XML window.


        Finally, the simplest way to make these changes would be to work with the current LinkBrowser source, but another really nice thing to do would be to reimplement the link browser using the current graph layout code.  This should not be too hard.

        Also, I'd love to hear more about your intended application, so if you'd like, you could post the info in the "similar applications" forum, or you could just send me an email at

        Thanks a lot,


        • Architexturez Researchers

          i will, soon post it in the similar applications forums, still trying to understand the issues involved right now.

          could you point me to some images or applications similar to what you have in mind? i am struggling to conjure up images of things you need.

          the intended application is for, the web site has large amounts of molecular data and a graph will really help in holding it together. you could see the architexturez glossalalia secton for some examples of the images we have in mind:


          i am posting for the website, which is a peer community.

          anand for

          • Alexander Shapiro


            All of my plans for future development are in text form.  As far as pictures go, all I can offer is the list of links from the LinkBrowser applet.

            Is your intention to contribute to TouchGraph outside the context of architexturez?  Otherwise, I think it would be best if you were the one to descibe what you have in mind.  The development of TG can proceed in many different directions, and there is no need to make your priorities coinside with the priorities of the project as a whole.

            It seems to me that the large collection of data from at architexturez would be perfect for being visualized using TouchGraph.  If you want to think beyond visualization, and consider the possibilities of interactive editing, then you can contact me with your needs and ideas (or post them to this list).

            Thanks, and I appreciate the content that you have at


            • Architexturez Researchers

              hi alex,

              we are going to write some extensions to touchgraph which query a MySql database via a PHP file on the server and then draw the contents, we are also thinking of builidng a graphical querying mechanism that could build queries, rather dynamically.

              people will also be able to edit the relational database, to an extent using the modified touchgraph interface, and of course, we are going to build in the seamless network of nodes thing.

              i think all the code we write could be made generic, (pardon the use of unconventional terms, but i am not a programmer, though there are several working on the project) and could be packaged with touchgraph.

              we briefly thought of writing a servlet that can communicate with the touchgraph client, but realised that most hosting services providers don't support servlets, and so settled for the php/mySql setup.
              -- anand.

              • Alexander Shapiro

                This is Awesome!  I am going to copy this message to the development forum, and reply to it.


    • Jack Park

      Jack Park - 2001-09-14

      It's just a thought, but Engelbart's Augment system used, if I understand it rightly, the ability to pop open windows (non-tiling, I think) such that you could then use a "double click" mechanism where by you click on one item in one pane, then click into a second pane and, depending on the command used, see the results in the second pane.  The command might be a copy, an edit, whatever.

      Consider that Jef Raskin, in his book _The Humane Interface_ is calling for something like a pan and zoom interface -- no more tiled windows, there might be something here.  Currently, the Java graphics system Jazz, and TG, among others, are beginning to move in this direction.


Log in to post a comment.