⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newentrywin.java

📁 JAVA开源LDAP浏览器jxplorer的源码!
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            {
                posDataModel.addElement(allObjectClasses.get(i));
            }
        }
        catch (NamingException e)
        {
            //TODO add a manual way for the user to manually add object classes
        }
        Enumeration existing = selDataModel.elements();
        while (existing.hasMoreElements())
        {
            posDataModel.removeElement(existing.nextElement());
        }

        display.makeHeavy();
        display.add(possiblePanel,0,4,2,2);
        display.add(selectedPanel,2,4,2,2);
        display.makeLight();
        display.newLine();

        select = new CBButton(CBIntText.get("Add"), CBIntText.get("Click to add the selection."));
        remove = new CBButton(CBIntText.get("Remove"), CBIntText.get("Click to remove the selection."));
        display.addWide(select, 2);
        display.addWide(remove, 2);
        display.newLine();

        validate();

        select.addActionListener(this);
        remove.addActionListener(this);
    }


    /**
     *    Callback from directory request to find possible object classes.
     */
     
    public void dataReady(DataQuery result)
    {
        try
        {
/*
            if (result.getType() == DataQuery.GETALLOC)
            {
                Vector allObjectClasses = result.getObjectClasses(); 
                
                //XXX every performance mistake in the book is committed here.
                for (int i=0; i<allObjectClasses.size(); i++)
                {
                    posDataModel.addElement(allObjectClasses.get(i));
                }
                
                Enumeration existing = selDataModel.elements();
                while (existing.hasMoreElements())
                {
                    posDataModel.removeElement(existing.nextElement());
                }
                    
				//possibleList.setListData(allObjectClasses);            
            }
*/
            if (result.getType() == DataQuery.GETRECOC)
            {
                if (suggestedClasses.size() < 1)  // only add suggestions if none have already been added!
                {
                    ArrayList recommendedObjectClasses = result.getObjectClasses();
                    for (int i=0; i<recommendedObjectClasses.size(); i++)
                        suggestedClasses.addElement(recommendedObjectClasses.get(i));
                }

                checkSuggestedList();
            }
        } 
        catch (NamingException e) {CBUtility.error(CBIntText.get("threaded broker error: "), e); } // XXXTHREAD
    }        

    /**
     *
     */
     
    protected void checkSuggestedList()
    {
        if (suggest == true && suggestedClasses.size() > 0)
        {
            for (int i=0; i<suggestedClasses.size(); i++)
            {
                selectClass((String)suggestedClasses.get(i));
            }
        }        
    }



    public void registerMouseListeners()
    {
        // 'add' list mouse listener
        possibleList.addMouseListener(new MouseAdapter()
        {
            public void mouseClicked(MouseEvent e) 
            {
               if (e.getClickCount() == 2) 
               {
                   selectClass((String)possibleList.getSelectedValue());
               }
               else
                   super.mouseClicked(e);
            }
        });

        selectedList.addMouseListener(new MouseAdapter() 
        {
            public void mouseClicked(MouseEvent e) 
            {
               if (e.getClickCount() == 2) 
               {
                   removeClass((String)selectedList.getSelectedValue());
               }
               else
                   super.mouseClicked(e);
            }
        });       
    }
    

    public void selectClass(String value)
    {
        if (selDataModel.contains(value)==false)
        {
            selDataModel.addElement(value);
            posDataModel.removeElement(value);
        }    
    }

    public void removeClass(String value)
    {
        if (selDataModel.contains(value))
        {
            selDataModel.removeElement(value);   
            if (posDataModel.contains(value) == false)
            { 
                // add element to the correct alphabetial position...
                Object[] possibleValues = posDataModel.toArray();
                int len = possibleValues.length;
                for (int i=0; i<len; i++)
                {
                    if (value.compareTo(possibleValues[i].toString()) <= 0)
                    {
                        posDataModel.add(i, value);
                        break;
                    }    
                }
            }                
        }    
    }
    

    /**
     *    <p>This creates the new entry</p>
     *
     *    <p>This method is extended from the base class, and is called 
     *    whenever the OK button is pressed.</p>
     */
     
    public void doOK()
    {
        // XXX maybe improve so user doesn't need to spec rdn at this stage.
        
        String rdnText = null;
        
        if (simpleMode == false)
        {
        
            rdnText = rdnField.getText().trim();

            int equalpos = rdnText.indexOf('=');
            rdnText = rdnText.substring(0, equalpos+1) + NameUtility.escape(rdnText.substring(equalpos+1));  // fix for bug 5515

            try                             // do sanity check
            {
//        if (RDN==null || "".equals(RDN)) return;
                if (rdnText==null || "".equals(rdnText))	//TE: empty RDN.
                    throw new InvalidNameException(CBIntText.get("Empty RDN, please enter a valid RDN. ") + ((rdnText==null)?"<null>":CBIntText.get("The RDN value entered was: '")+rdnText) + "'");

                if (NameUtility.next(rdnText,0,'=')<0)	//TE: no '='.
                    throw new InvalidNameException(CBIntText.get("Invalid RDN, please enter a naming attribute followed by '=' followed by a name in the RDN field (for example, 'cn=Trudi). '") + ((rdnText==null)?"<null>":CBIntText.get("The RDN value entered was: '")+rdnText) + "'");
                else if (NameUtility.next(rdnText,0,'=')<1)	//TE: no naming attribute.
                    throw new InvalidNameException(CBIntText.get("Invalid RDN, please enter a naming attribute in the RDN field (for example, cn: 'cn=Trudi). '") + ((rdnText==null)?"<null>":CBIntText.get("The RDN value entered was: '")+rdnText) + "'");
            }
            catch (InvalidNameException ine) 
            {
                CBUtility.warning(this, CBIntText.get("Please Fill in the RDN field with a valid RDN."), CBIntText.get("Invalid RDN"));
                log.log(Level.WARNING, "Invalid RDN value in the New Entry dialog: ", ine);
                return;
            }

            String dn;
            if (parentDNField.getText().trim().length() > 0)
                dn = rdnText + "," + parentDNField.getText();
            else 
                dn = rdnText;                
                
            //DN newObjectDN = new DN(dn);
            entryDN = new DN(dn);
        }                                
                                
        Enumeration atts = selDataModel.elements();
        
        if (atts == null)  // error: force user to use cancel to exit
            {CBUtility.warning(this, CBIntText.get("At least one object class must be selected!"),CBIntText.get("Need ObjectClass(s)"));return;}
            
        
        BasicAttribute obclasses = new BasicAttribute((objectClassName==null)?"objectClass":objectClassName);
        while (atts.hasMoreElements())
        {
            String oc = atts.nextElement().toString();

            obclasses.add(oc);
        }
        if (obclasses.size()==0) 
            {CBUtility.warning(this, CBIntText.get("At least one object class must be selected."), CBIntText.get(" Need ObjectClass(s)")); return;}// error: force user to use cancel to exit
            
		if (virtualEntry)	
		{			  
			//TE: if it is a virtual entry we don't want to add a new entry it at this stage.  We just want
			//	  to get the object class(es) that the user has selected.
			newObjectClasses = obclasses;
			doCancel();
		}		
			
        if (createNewEntry(obclasses, rdnText, entryDN) == true)
            doCancel();
        // otherwise something went wrong, so keep dialog window around...                
    }

    /**
     *    When Cancel is pressed (or the window is finished)
     *    this method shuts the window down, and prompts the
     *    parent to repaint (avoiding those nasty paint artifacts).
     */
     
    public void doCancel()
    {
        setVisible(false);
        dispose();
        this.getParent().repaint();
    }

    
    public void actionPerformed(ActionEvent e)
    {
        Object src = e.getSource();
    
        if (src == select)
        {
            if (possibleList.getSelectedValue() != null)
                selectClass(possibleList.getSelectedValue().toString());
        }
        else if (src == remove)
        {
            if (selectedList.getSelectedValue() != null)
                removeClass(selectedList.getSelectedValue().toString());
        }
        else if (src == autoSuggest)
        {
            suggest = autoSuggest.isSelected();
            if (suggest == true)
                checkSuggestedList();
            else
            {
                if (suggestedClasses.size() > 0)
                {
                    for (int i=0; i<suggestedClasses.size(); i++)
                        removeClass((String)suggestedClasses.get(i));
                }
            }
        }
    }
    
    
    /** 
     *    create a new Entry, by constructing a DXAttributes object
     *    using the list of objectclasses, and the rdn text, and
     *    passing it to a TreeEntryCreator
     */
     
    public boolean createNewEntry(Attribute obclasses, String rdnText, DN newObjectDN)
    {       
        // create a schema aware DXAttributes object, use it to get the list of all
        // parent object classes as an attribute, and add it to the DXAttributes
        
        DXAttributes attlist = new DXAttributes(obclasses);
        Attribute allObjectClasses = attlist.getAllObjectClasses();

        if (allObjectClasses == null) return false;  // should never happen

        //DXNamingEnumeration bloop = new DXNamingEnumeration(allObjectClasses.getAll());
        attlist.put(allObjectClasses);
        attlist.expandAllAttributes();

        // copy appropriate default values (if any)
        if (defaultAttributes !=null)
        {
            DXNamingEnumeration defAtts = (DXNamingEnumeration)defaultAttributes.getAllNonNull();
            while (defAtts.hasMore())
            {
                Attribute defAtt = (Attribute)defAtts.next();
                String defAttName = defAtt.getID();
                if (defAttName.equalsIgnoreCase("objectclass")==false)
                {
                    if (attlist.get(defAttName)!=null)    // only use defaults for valid attribute
                        attlist.put(defAtt);
                }
            }
        }

        
        if (rdnText != null)
        {
            RDN rdn = new RDN(rdnText);
        
            if (rdn.size()==0 || "".equals(rdn.getRawVal(0)))
            {
                CBUtility.warning(this, CBIntText.get("Please fill in a valid name for the entry"), CBIntText.get("Can't read RDN")); 
                return false;
            }
        
            String rdnAttribute = rdn.getAtt(0);
            String rdnValue = rdn.getRawVal(0);
            
            if (rdn.isMultiValued()==false)
            {
                BasicAttribute rdnAtt = new BasicAttribute(rdnAttribute, rdnValue);
                attlist.put(rdnAtt);
            }
            else    // multi valued rdn...
            {
                for (int i=0; i<rdn.size(); i++)
                {
                    BasicAttribute rdnAtt = new BasicAttribute(rdn.getAtt(i), rdn.getRawVal(i));
                    attlist.put(rdnAtt);
                }
            }
            if (rdn.validate() == false)            
            {
                CBUtility.warning(this, CBIntText.get("Couldn't parse entry's name - please try again"), CBIntText.get("Can't read RDN")); 
                return false;
            }
        }
        
        setVisible(false);
        this.getParent().repaint();
        
        if (dataSource == null)  // rare error (should be never)
        {
            CBUtility.error(CBIntText.get("unusual error:") + "\nno Data Source registered in NewEntryWin.", null);     
            return false;
        }
        
//        CBUtility.setWaitCursor(this);
        log.fine("creating entry " + newObjectDN);
        DXEntry newEntry = new DXEntry(attlist, newObjectDN);
        
        newEntry.setStatus(DXEntry.NEW);
        entryEditor.displayEntry(newEntry, dataSource);
        
//        dataSource.modifyEntry(null, newEntry);
//        CBUtility.setNormalCursor(this);
        return true;
    }	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -