Determing which component from a custom TreeCellRenderer was clicked on

hi,
i've been experimenting with finding which component has been clicked on in a JTree which has a custom tree cell renderer. I've got a piece of code that appears to work, but am unsure if this is the proper way to go about doing this, and whether it might fail under some circumstances.
any help appreciated,
asjf
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
public class JTreeTest1 {
   public static void main(String[] arg) throws Exception {
      final JTree tree = new JTree();
      final TreeCellRenderer renderer = new MyRenderer();
      tree.setCellRenderer(renderer);
      tree.addMouseListener(new MouseAdapter() {
         public void mouseClicked(MouseEvent e) {
            int x = e.getX(), y = e.getY();
            int row = tree.getRowForLocation(x,y);
            TreePath path = tree.getPathForLocation(x,y);
            if(path!=null) {
               Object o = path.getLastPathComponent();
               Rectangle r = tree.getPathBounds(path);
               // how to detect what component has been clicked on?
               // simplification: pretend all boolean state has no effect on renderer (which is true for the renderer below)
               Component renderedComponent = renderer.getTreeCellRendererComponent(tree, o, false, false, false, row, false);
               renderedComponent.setBounds(r);
               int _x = (int) ((double)e.getX() - r.getX());
               int _y = (int) ((double)e.getY() - r.getY());
               Component clickedUpon = SwingUtilities.getDeepestComponentAt(renderedComponent, _x, _y);
               if(clickedUpon instanceof JLabel) {
                  JLabel jl = (JLabel) clickedUpon;
                  System.out.println(jl.getText());
      JFrame frame = new JFrame("JTreeTest1");
      frame.getContentPane().add(tree);
      frame.pack();
      frame.setVisible(true);
class MyRenderer extends JPanel implements TreeCellRenderer {
   JLabel custom;
   public MyRenderer() {
      super(); // flow layout
      add(new JLabel("Hello"));
      add(custom = new JLabel());
      custom.setOpaque(true);
      custom.setBackground(UIManager.getColor("Tree.background"));
      custom.setForeground(UIManager.getColor("Tree.foreground"));
      add(new JLabel("World"));
   public Component getTreeCellRendererComponent(JTree tree, Object value, boolean isSelected, boolean expanded,
                                                 boolean leaf, int row, boolean hasFocus)
      custom.setText("("+value.toString()+")");
      return this;
}

My only advice would be to remember that rendered components are not actually added to the tree, so they are not a child of the tree... they actually cannot be clicked on. The rendered components are quickly used just to paint and specific image and then discarded (which is why you don't typically want to create new ones each time). When you click on the tree, there is no "rendered component" there, just an image that was painted.
Hope this helps
Josh Castagno
http://www.jdc-software.com

Similar Messages

  • Calling a method in the Custom ADF component from JSF page

    HI.
    I have created some custom compoents by extending the core ADF Components. Like i have a ComboBoxDefault component with it's ComboBoxDefaultTag.java and Controls.tld file.
    Now my requirement is i want to bind my label to this component from the JSF page. like
    <fwcontrols:label binding="#{listComponents.comboBoxDefaultLabel}" id="label1"/>
    <fwcontrols:comboBoxDefault binding="#{listComponents.cmbLocales}"
    value="en_GB" id="comboBoxDefault" autoSubmit="true" label="label1">
    <f:selectItems value="#{listComponents.locales}"/>
    </fwcontrols:comboBoxDefault>
    In my JSF page the label will have an id, and that id will be specified in the label tag of the component.
    In Tag.java file i have overrided the setProperty(FacesBean facesBean). In this method i have bind all my properties. In core JSF the setProperty method is provided with the UIComponent parameter, so i can call my method in component also. Which is not in case of ADF Faces.
    My main point is how i can call my method setLabel() which is in ComboBoxDefault.java so that i can set the label.
    Thanks in Advance.

    Thanks for all your replies. I want this kind of a functionality because Im trying to invove a DC (Child DC) from a Parent DC such that the Child DC's view is displayed onto the view container of the Parent DC. I have embedded using 'interface view of a component instance' in the Parent Window and am able to create the component and set usage though the onPlugDefault of the Child View.
    But I observe that when i make a call from the parent, the flow is like this:
    1. The wdDoInit of the Child Component Controller gets triggered first.
    2. Then the wdDoInit of the Child's <b>VIEW</b> gets triggered
    3. and <b>THEN</b> the onPlugDefault of the Child Component Interface View
    What I had actually wanted was to Fire onPlugDefault where Im calling a method LoadData(), after which the Child DC's view must be triggered so it can display the fetched data.
    What is actually happening is the view gets displayed, but no data is displayed in the view.
    Right now I have just given a work around where Im triggering <b>LoadData()</b> of the <b>COmponent COntroller</b> from the <b>wdDoInit</b> of the <b>VIEW</b>.
    Is there a better way to do this? I find it strange that I have to load the Data from the view.
    Thanks
    Jack

  • How can you expect the customer to have a LOCAL/COUNTRY Based Credit Card every where we go??? Last week I was on holiday in HK,  and  from my Hotel I was able to use m VN Credit Card with my Apple ID and purchase online!  Why THIS WEEK, can't I use my HS

    Apple_ID_card_declined_for_this_country
    How can you expect the customer to have a LOCAL/COUNTRY Based Credit Card every where we go???
    Last week I was on holiday in HK,
    and
    from my Hotel I was able to use m VN Credit Card with my Apple ID and purchase online!
    Why THIS WEEK, can't I use my HSBC Platinum Credit Card from Vietnam,
    for my Singapore Apple ID account ,
    while working here in Vietnam???

    Unfortunately, this is a problem that is driven by the DRM Dictatorship.  Despite the proliferation of mobile devices and the fact that there are many of us who do a lot of international travel, content providers don't want you to have access to their products outside of your homeland.  The Balkanized mentality of the DRM Dictatorship is way out of touch with the modern world.
    At least Apple, to its credit, allows you to use your accounts outside of your homeland as long as you have the proper credentials for them.  Most other services use the more Draconian geolocation filtering which does require you to be physically present in your homeland.  For the most part, you are not allowed to leave home if you want access to your favorite entertainment!

  • How can I use a SCH-LC11 device in CHINA which bought from ebay. I am not Verizon customer but I prefer to using your 4G LTE Router . How can I get the unlock code? The device may have a bad ESN but I only use it in CHINA. Kindly looking forward your repl

    How can I use a SCH-LC11 device in CHINA which bought from ebay. I am not Verizon customer but I prefer to using your 4G LTE Router . How can I get the unlock code? The device may have a bad ESN but I only use it in CHINA. Kindly looking forward your reply. Thanks!

    It's good to read Antoniad's post.  It reassures me that I can use my new iPad as an international communication device which is the reason I purchased the thing.  However, I called Verizon today (my provider of cellular data) who told me that I can't just pop in a SIM card as you suggested.  He also said that he was from the "Pre-Pay" division of Verizon and he was certain that I couldn't do what I planned to do.  I was extremely disappointed as I had called Apple prior to buying the iPad and I read the algorhythm on the website for choosing an iPad before purchasing.  Those sources were quite specific and the information seemed clear.  I would be able to use my iPad to communicate through cellular connections while traveling on the road, literally, abroad.  I was told that I could pop in a data card wherever I was, just as you indicated in your message above, and voila I was good to go.  The Verizon rep definitively rained on that parade, but said that I might be able to do this if I have a "Post-Pay" account, a different area of Verizon.  I haven't had the chance to talk to this division yet, so I looked to Apple's Support for answers.  Maybe I will find out that I can use my iPad as an international communication device while traveling on the road afterall, however, it appears I may need a different type of account (Post-Pay), something I was never warned about. Can I switch to this kind of account?  I don't know.  I have to find out.  If you have any information about this issue, it would be good to share since I strongly suspect there are others who bought the iPad for the same purpose that I have.

  • Change base view state from a custom component

    I'm pretty new to flex and I'm having a small issue in change the view state from a component.
    My Application have 2 custom components called userlogin and main menu. In the main application page I have userlogin component in one state and the main menu component in another. I'm trying to change the state if the login in successful from user login to main menu. I have the following function written inside the login component.
    private function IsUserLoggedIn(evt:ResultEvent):void
                    if (evt.result.islogin.toString() == "true")
                        currentState = "MainMenu";
                    else
                        Alert.show("Login failed, please try again.", "Login Failed");
    This code worked when I had all the controls in the main page. But then I created components and included them in to components and now when the login is success, its giving the following error.
    ArgumentError: Undefined state 'MainMenu'.
        at mx.core::UIComponent/getState()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\UI Component.as:9908]
        at mx.core::UIComponent/findCommonBaseState()[E:\dev\4.0.0\frameworks\projects\framework\src \mx\core\UIComponent.as:9928]
        at mx.core::UIComponent/commitCurrentState()[E:\dev\4.0.0\frameworks\projects\framework\src\ mx\core\UIComponent.as:9750]
        at mx.core::UIComponent/setCurrentState()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\ core\UIComponent.as:9701]
        at mx.core::UIComponent/set currentState()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\UIComponent.as:6087 ]
        at components::UserLoginForm/__btnSubmit_click()[C:\Projects\WarrantyAutomation\src\componen ts\UserLoginForm.mxml:60]
    I'm sure this has something to do with accessing the states from a custom component, but I do not know how to change the state to the main menu. Please help me with this. Any help is greatly appriciated.

    Hi dasun1981,
    private function IsUserLoggedIn(evt:ResultEvent):void
                    if (evt.result.islogin.toString() == "true")
                        currentState = "MainMenu";
                    else
                        Alert.show("Login failed, please try again.", "Login Failed");
    If I am right the above function is in your userlogin component and the two components "userlogincomponent" and "maincomponent" are in main application file and the states were also defined in main application file.
    But in the function above the currentState refers to the state of the userlogin component and not the main application ...but the states are defined in main application file...that's the reason why the exception was thrown...
    Instead you replace the line in the above function with the below line:
    Application.application.currentState = "MainMenu";
    Please mark it as answer if it helped you.
    Thanks,
    Bhasker Chari

  • How to get component from which PropertyChange is activated

    I have a PropertyChangeListener on JInternalFrames. The frames are added using same method. I need to know from which component (frame) the 'close'-property is changed. I cannot figure out how to get it.
    When a propertychange is fired, how do i know from which componen (frame) it is fired?
    Common method to create frames is as follows:
             private void createPanel(JInternalFrame myFrame) {
            myDeskTop.add(myFrame);
                myFrame.pack();
            myFrame.setClosable(true);
                try {
                    myFrame.setMaximum(true);
                } catch (PropertyVetoException e){}
            myFrame.addPropertyChangeListener(new PropertyChangeHandler());
        }Code to execute handler is as follows:
        class PropertyChangeHandler implements PropertyChangeListener {
            public void propertyChange(PropertyChangeEvent e) {
              if (((String)e.getPropertyName()).equals("closed")){
                  if (myActiveApplication.equals("myPanelTestje")){
                      myPanelTestje = null;
                  if (myActiveApplication.equals("myFrameTestje")){
                      myFrameTestje = null;
                  if (myActiveApplication.equals("myHolidays")){
                      myHolidays = null;
                  if (myActiveApplication.equals("myInsurance")){
                      myInsurance = null;
            }

    Indeed no need to cast.
    When i click 'close' in the upper right corner of the JInternalFrame, the handler is executed and e.getPropertyName results in "closed". So, the correct property is activated but the problem was, how to detect from which JInternalFrame it was originated? The only way to find out from which panel the 'close'property is activated seems to be a test on the 'instance' (as in the example). Don't know if there is any way to check the panelname itself? It would be something like: e.getSource().getComponentName()
    class PropertyChangeHandler implements PropertyChangeListener {
    public void propertyChange(PropertyChangeEvent e) {
    if (e.getPropertyName().equals("closed")){
    if ((e.getSource() instanceof testApp)){
    myPanelTestje = null;
    if ((e.getSource() instanceof testInternalFrame)){
    myFrameTestje = null;
    if ((e.getSource() instanceof HolidayMenu)){
    myHolidays = null;
    if ((e.getSource() instanceof Insurance)){
    myInsurance = null;
    }If someone has a better way, please let me know. Otherwise consider this question closed.
    Thanks for the replies.

  • Creating a button that leads back into the main Pages/States from a custom component

    Hello Y'all! isnt F.C. awesome!
    BUT... just cant get a button that leads from a custom component ive made back into the main bulk of pages and states ive created to work.
    it runs a bit like this:
    Main title page...
                            Photography...
                                                 Nature (on which theres a Custom Component which when clicked leads to...)
                                                            20 different custom component states each with different pics, linked via buttons
    from each of which id love a button that led back to Photography, exiting the custom component
    ive tried the basics:      Add interaction.. when clicked.. play transition to.. state: Photography
    but to no avail
    any ideas? im at a loss!
    thanks in advance,
    Tom

    Cross component communications are an issue in Flash Catalyst 1.0. Thankfully, in Flash Catalyst 5.5 the team addressed some of those issues.
    The only idea I have for remove the 'return' button from within the component, then it should be able to get you back to the home state.
    Or, you might be able to wait a few weeks for the new version of Flash Catalyst to ship (or you can play with the older preview release on labs.adobe.com)
    Chris

  • HT5457 I have iPhone 4 which i bought from Bahrain and it was working there just fine. However, now I'm in India but my phone is not supporting any SIM. What can I do please suggest guys? Thanks in advance

    I have iPhone 4 which i bought from Bahrain and it was working there just fine. However, now I'm in India but my phone is not supporting any SIM. What can I do please suggest guys? Thanks in advance

    Sounds like your iPhone is locked to the wireless carrier you used
    in Bahrain. Contact that wireless carrier to see if they offer unlocking
    and if you qualify. Only the carrier to which the iPhone is locked
    can unlock it.
    What does it say when you look at Settings=>General=>Carrier?
    Remember that the warranty is not international. You will have to
    return the iPhone to Bahrain for repair/replacement if it needs service.

  • I try to download from my app store but wont download, it ask me to upgrade to mac OS X 10.10 which i try to download but was not going through. i think am having a MAC OS X 10.6.  secondly, what is Macintosh HD all about?

    i try to download from app store but was asking meto upgrade to MAC OS X10.10, which i try to download but wont donwload, i have a IMAC( mac os x 10.6.3), how can i go about it?

    Have you used SoftwareUpdate to get to 10.6.8 yet?
    That's one requirement.

  • Move the component which expried from the production area to the blaocked

    Hi
    we maintain the same storage location for production area and raw material storage area under the ware house.
    by differentiate by storage type.
    now we need to move the component which expried from the production area to the blaocked stock
    which t.code
    thanks
    vraj

    Process is Normal only. Go to MB1B. Use 344 Movement type. A Material document is created. A PCN is automatically created. Now convert the PCN to TO by LT04/LT06. Here you have to give your storage type as your production area.

  • I installed snow leopard which I now realise that it was the wrong one because it came out before my laptop and now it won't changed from the grey screen with the apple on it how do I fix it ???

    I installed snow leopard which I now realise that it was the wrong one because it came out before my laptop and now it won't changed from the grey screen with the apple on it how do I fix it ???

    MacBook Pro
    Apple - Support - MacBook Pro
    Mac OS Version builds
    When did yours come out? what does the above show as model and minimum build?
    You should have yoru OEM OS X DVD, not one from another Mac, or retail, though the last retail OS X DVD was a year ago 10.6.3.
    If it installed, I don't see an issue unless the drive had corrupt directory etc.
    What you need to do is repair your boot drive or restore from backup.

  • I had just bought a $25 iTunes giftcard for my girlfriend's birthday, which is 2 months from now. I was wondering if the iTunes giftcard will still be 'useable' by then.

    I had just bought a $25 iTunes giftcard for my girlfriend's birthday, which is 2 months from now. I was wondering if the iTunes giftcard will still be 'useable' by then.

    Yes

  • Which component do I need to paste images, pictures from the clipboard.

    Hey all,
    I've made a java-application and with a click on a button, I jump to a drawprogramme.
    When I've finished my picture, copied i to the clipboard(ctrl c), I want to show it in my application.
    How can I do this and in which component must I paste it?
    Thanks.

    This is the code I use:
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    Transferable transferable = clipboard.getContents(this);
    if (transferable.isDataFlavorSupported(DataFlavor.imageFlavor)) {
    try {
    //pp is my panel to paste in
    pp.image = (Image)transferable.getTransferDataDataFlavor.imageFlavor);
    pp.repaint();
    catch (Exception ex) {
    System.out.println(ex);
    Sometimes it works, but mostly I receive a black box.

  • Custom TreeCellRenderer

    I've written a custom TreeCellRenderer that extends DefaultTreeCellRenderer. Each node in the tree has an object associated with it, and depending on that object, a different icon is used by the renderer (its not a file system, but similar).
    The problem is that when you edit a node, the default icons are used. The custom renderer is being used by the TreeCellEditor (also custom), but I think it is using the getXXXXIcon() methods rather than the getTreeCellRendererComponent method.
    The solution seems to be to override the getTreeCellEditorComponent() method in the TreeCellEditor class, but apart from the icon this is doint exactly what I want it to do.
    Is there an easy way to change the icon it will use without causing too much carnage?

    I wanted to make sure I was correct, but I wasn't.import java.awt.*;
    import javax.swing.*;
    import javax.swing.tree.*;
    import java.util.Random;
    public class Test2 extends JFrame {
      static final ImageIcon[] icons = { new ImageIcon("icon1.gif"),
                                         new ImageIcon("icon2.gif") };
      public Test2() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container content = getContentPane();
        DefaultMutableTreeNode root = new DefaultMutableTreeNode(
                                                  new MyObject("root", icons[0]));
        JTree jt = new JTree(root);
        jt.setCellRenderer(new MyRenderer());
        Random r = new Random();
        for (int i=0; i<5; i++) {
          DefaultMutableTreeNode child = new DefaultMutableTreeNode(
                      new MyObject("Child-"+i,icons[r.nextInt(icons.length)]));
          root.add(child);
          for (int j=0; j<5; j++) {
            DefaultMutableTreeNode gchild = new DefaultMutableTreeNode(
                        new MyObject("Grandchild-"+j,icons[r.nextInt(icons.length)]));
            child.add(gchild);
          content.add(new JScrollPane(jt), BorderLayout.CENTER);
        setSize(300,300);
      public static void main(String[] args) { new Test2().setVisible(true); }
    class MyObject {
      String text;
      Icon icon;
      public MyObject(String text, Icon icon) { this.text=text; this.icon=icon; }
      public String toString() { return text; }
      public Icon getIcon() { return icon; }
    class MyRenderer extends DefaultTreeCellRenderer {
      public Component getTreeCellRendererComponent(JTree tree, Object value,
                                                    boolean sel, boolean exp,
                                                    boolean leaf, int row,
                                                    boolean focus) {
        Component c = super.getTreeCellRendererComponent(tree, value, sel, exp, leaf,
                                                    row, focus);
        if (value instanceof DefaultMutableTreeNode) {
          Object val = ( (DefaultMutableTreeNode) value).getUserObject();
          if (val instanceof MyObject) {
            System.out.println("Yes");
            setIcon( ( (MyObject) val).getIcon());
          } else System.out.println("No: " + val.getClass());
        return c;
    }

  • HT5621 I bought my iMac from someone. Everything was changed over to my name however when I try to update programs it only shows the old users apple ID and I can't update. How do I change this so I can update the applications and have everything fully und

    I bought my iMac from someone. Everything was changed over to my name however when I try to update programs it only shows the old users apple ID and I can't update. How do I change this so I can update the applications and have everything fully under me?

    The first thing to do with a second-hand computer is to erase the internal drive and install a clean copy of OS X. You — not the previous owner — must do that. How you do it depends on the model, and on whether you already own another Mac. If you're not sure of the model, enter the serial number on this page. Then find the model on this page to see what OS version was originally installed.
    1. You don't own another Mac.
    If the machine shipped with OS X 10.4 or 10.5, you need a boxed and shrink-wrapped retail Snow Leopard (OS X 10.6) installation disc from the Apple Store or a reputable reseller — not from eBay or anything of the kind. If the machine has less than 1 GB of memory, you'll need to add more in order to install 10.6. Preferably, install as much memory as it can take, according to the technical specifications.
    If the machine shipped with OS X 10.6, you need the installation media that came with it: gray installation discs, or a USB flash drive for some MacBook Air models. For early MBA models, you may need a USB optical drive or Remote Disc. You should have received the media from the previous owner, but if you didn't, order replacements from Apple. A retail disc, or the gray discs from another model, will not work.
    To boot from an optical disc or a flash drive, insert it, then reboot and hold down the C key at the startup chime. Release the key when you see the gray Apple logo on the screen.
    If the machine shipped with OS X 10.7 or later, you don't need media. It should boot into Internet Recovery mode when you hold down the key combination option-command-R at the startup chime. Release the keys when you see a spinning globe.
    2. You do own another Mac.
    If you already own another Mac that was upgraded in the App Store to the version of OS X that you want to install, and if the new Mac is compatible with it, then you can install it. Use Recovery Disk Assistant to create a bootable USB device and boot the new Mac from it by holding down the C key at the startup chime. Alternatively, if you have a Time Machine backup of OS X 10.7.3 or later on an external hard drive (not a Time Capsule or other network device), you can boot from that by holding down the option key and selecting it from the row of icons that appears. Note that if your other Mac was never upgraded in the App Store, you can't use this method.
    Once booted in Recovery, launch Disk Utility and select the icon of the internal drive — not any of the volume icons nested beneath it. In the Partition tab, select the default options: a GUID partition table with one data volume in Mac OS Extended (Journaled) format. This operation will permanently remove all existing data on the drive.
    After partitioning, quit Disk Utility and run the OS X Installer. You will need the Apple ID and password that you used to upgrade. When the installation is done, the system will automatically reboot into the Setup Assistant, which will prompt you to transfer the data from another Mac, its backups, or from a Windows computer. If you have any data to transfer, this is usually the best time to do it.
    Then run Software Update and install all available system updates from Apple. To upgrade to a major version of OS X newer than 10.6, get it from the Mac App Store. Note that you can't keep an upgraded version that was installed by the previous owner. He or she can't legally transfer it to you, and without the Apple ID you won't be able to update it in Software Update or reinstall, if that becomes necessary. The same goes for any App Store products that the previous owner installed — you have to repurchase them.
    3. Other issues
    If you see a lock screen when trying to boot from installation media or in Recovery mode, then a firmware password was set by the previous owner, or the machine was remotely locked via iCloud. You'll either have to contact the owner or take the machine to an Apple Store or another authorized service provider to be unlocked. You may be asked for proof of ownership.
    If the previous owner "accepted" the bundled iLife applications (iPhoto, iMovie, and Garage Band) in the App Store so that he or she could update them, then they're linked to that Apple ID and you won't be able to download them without buying them. Reportedly, Mac App Store Customer Service has sometimes issued redemption codes for these apps to second owners who asked.
    If the previous owner didn't deauthorize the computer in the iTunes Store under his Apple ID, you wont be able to  authorize it immediately under your ID. In that case, you'll either have to wait up to 90 days or contact iTunes Support.
    When trying to create a new iCloud account, you might get a failure message: "Account limit reached." Apple imposes a limit of three iCloud account setups per device. Erasing the device does not reset the limit. You can still use an account that was created on another device, but you won't be able to create a new one. Contact iCloud Support for more information.

Maybe you are looking for

  • Need help in creating alert message in HTML template.

    Hi All, I am using internet service for BBPMAININT. In the template 120, i am checking for the length of partner number should not be greater than 4 characters. For this i have created a method in javascript which gives a popup. I have create a param

  • My iphone 3G doesn't detect my JawBone headset!!

    Hey everyone, hope someone can help me out!! I got my iphone 3g couple days ago, everything works great. But when i turn on the blueooth and try to connect it to my Jawbone headset, it is just showing searching, searching and nothing was being detect

  • Publish to iCloud freezes app?

    If I try to Publish to iCloud by hitting the toggle in my Journals section, the app completely freezes and I have to restart it entirely. Scrolling down before I actually clicking Publish to iCloud shows a "Checking publish status..." notification th

  • Ios unable to update or restore on iphone4

    My iphone 4 was updating ios 6 but error occured and alerted me to restore my phone. Now Itunes wont sync. Requesting help trouble shooting this error.

  • P4's /Oracle 9i/Designer 6i Repository Creation Problems

    Hi, I am currently running Windows 2000 Professional on a new P4. I was unable to install Oracle 8.1.6 so have installed Oracle 9i and Designer 6i. I have not been able to get a Repository built with this combination of hardware/software. Can anyone