home *** CD-ROM | disk | FTP | other *** search
Wrap
package com.extensibility.xa; import com.extensibility.app.BaseAction; import com.extensibility.app.BaseDocument; import com.extensibility.app.BaseEdit; import com.extensibility.app.BaseUndoable; import com.extensibility.app.DialogFactory; import com.extensibility.app.OpenURIDialog; import com.extensibility.app.SaveURIDialog; import com.extensibility.app.UI; import com.extensibility.plugin.api.URIVersionedAccess; import com.extensibility.rock.RBevelBorder; import com.extensibility.rock.RButton; import com.extensibility.rock.Screen; import com.extensibility.rock.ScrollPop; import com.extensibility.xa.undo.ClearDeclsUndoable; import com.extensibility.xml.BaseDeclaration; import com.extensibility.xml.DTDUtilities; import com.extensibility.xml.ExternalPEDeclaration; import com.extensibility.xml.ExternalSubset; import com.extensibility.xml.InternalPEDeclaration; import com.extensibility.xml.NamespaceDeclaration; import com.extensibility.xml.Schema; import com.extensibility.xml.SchemaFlavorIntf; import com.extensibility.xml.SchemaIntf; import com.extensibility.xml.SchemaUtilities; import com.extensibility.xml.URI; import java.awt.Component; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.ClipboardOwner; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.event.MouseEvent; import java.io.FileNotFoundException; import java.io.IOException; import java.io.Writer; import java.net.UnknownHostException; import java.util.Enumeration; import java.util.Vector; import javax.swing.Icon; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.event.MouseInputAdapter; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; public class OverviewPane extends CompositePane implements ClipboardOwner { public CutAction cutAction; public CopyAction copyAction; public PasteAction pasteAction; public ClearAction clearAction; Icon icnElement = UI.getIcon("tbElem.gif"); Icon icnAttribute = UI.getIcon("tbAttr.gif"); Icon icnPE = UI.getIcon("tbPE.gif"); Icon icnGE = UI.getIcon("tbGE.gif"); Icon icnNotation = UI.getIcon("tbNT.gif"); Icon icnSubset = UI.getIcon("uri.gif"); Icon icnSubsetRO = UI.getIcon("uri_ro.gif"); Icon icnPI = UI.getIcon("tbPI.gif"); Icon icnMSO = null; Icon icnMSC = null; Icon icnNamespace = UI.getIcon("tbNS.gif"); Icon icnDataType = UI.getIcon("tbDT.gif"); JPanel panel; JScrollPane scrollTree; OverTree tree; BaseDeclaration currentDecl; OverTreeModel treeModel; MouseInputAdapter treeMouseInputListener = new 1(this); ImportAction importAction = new ImportAction(this); IncludeAction includeAction = new IncludeAction(this); SchemaDocListener schemaListener = new 8(this); public OverviewPane(SchemaDoc var1) { super(var1); this.prepare(); this.cutAction = new CutAction(this); this.copyAction = new CopyAction(this); this.pasteAction = new PasteAction(this); this.clearAction = new ClearAction(this); this.tree.updateTree(this.getShowDecls()); } protected void doPopup(MouseEvent var1) { TreePath var2 = this.tree.getClosestPathForLocation(var1.getX(), var1.getY()); if (var2 != null) { BaseDeclaration var3 = this.getDeclOfPath(var2); if (var3 != null) { this.tree.setSelectionPath(var2); boolean var4 = true; if (var3 instanceof ExternalSubset && ((ExternalSubset)var3).getParent() == null) { var4 = false; } ScrollPop var5 = new ScrollPop(); if (var4) { ((JPopupMenu)var5).add(this.cutAction); } ((JPopupMenu)var5).add(this.copyAction); ((JPopupMenu)var5).add(this.pasteAction); if (var4) { ((JPopupMenu)var5).add(this.clearAction); } ((JPopupMenu)var5).addSeparator(); ((JPopupMenu)var5).add(((CompositePane)this).getSchemaWin().createGotoAction(var3)); if (var3 instanceof ExternalSubset && ((ExternalSubset)var3).getParent() != null) { ((JPopupMenu)var5).addSeparator(); URI var6 = ((ExternalSubset)var3).getSystemURI(); URIVersionedAccess var7 = (URIVersionedAccess)var6.getInterface(Class.forName("com.extensibility.plugin.api.URIVersionedAccess")); if (var7 != null) { } if (((CompositePane)this).getSchemaDoc().isEditable(var6)) { ((JPopupMenu)var5).add(this.createLockURIAction(var6, var3)); ((CompositePane)this).getSchemaWin().buildModuleChangerItems(var3, var6, var5); } else { ((JPopupMenu)var5).add(this.createUnlockURIAction(var6, var3)); } } ((JPopupMenu)var5).show(this.tree, var1.getX(), var1.getY()); } } } protected BaseAction createCheckinAction(URI var1, BaseDeclaration var2) { return new 2(var1, var2, this, "pop.uri.checkin", var1.getShortName()); } protected BaseAction createUncheckoutAction(URI var1, BaseDeclaration var2) { return new 3(var1, var2, this, "pop.uri.uncheckout", var1.getShortName()); } protected BaseAction createCheckoutAction(URI var1, BaseDeclaration var2) { return new 4(var1, var2, this, "pop.uri.checkout", var1.getShortName()); } protected BaseAction createUnlockURIAction(URI var1, BaseDeclaration var2) { return new 5(var1, var2, this, "pop.uri.set.editable", var1.getShortName()); } protected BaseAction createLockURIAction(URI var1, BaseDeclaration var2) { return new 6(var1, var2, this, "pop.uri.set.non.editable", var1.getShortName()); } public void updateTreeModel(BaseDeclaration var1) { DefaultMutableTreeNode var2 = this.treeModel.findNode(var1); if (var2 != null) { DefaultTreeModel var3 = (DefaultTreeModel)this.tree.getModel(); var3.nodeChanged(var2); } } public String getClassName() { return "com.extensibility.xa.OverviewPane"; } public JComponent getComponent() { return this.scrollTree; } private void prepare() { this.panel = new JPanel(new GridBagLayout()); this.panel.setBorder(new RBevelBorder(1)); GridBagConstraints var1 = new GridBagConstraints(); var1.weightx = (double)0.5F; var1.fill = 2; var1.weightx = (double)1.0F; var1.gridwidth = 2; var1.gridx = 0; this.treeModel = new OverTreeModel(((CompositePane)this).getSchemaDoc()); this.tree = new OverTree(this.treeModel); this.tree.setFont(UI.getDocFont()); this.tree.setCellRenderer(new DeclRenderer(this)); this.tree.addMouseListener(this.treeMouseInputListener); this.tree.addMouseMotionListener(this.treeMouseInputListener); this.scrollTree = new JScrollPane(this.tree); var1.gridy = 1; var1.fill = 1; var1.weighty = (double)1.0F; this.panel.add(this.scrollTree, var1); this.setButtonsOnFlavor(); this.tree.addTreeSelectionListener(new 7(this)); ((CompositePane)this).getSchemaDoc().addDocumentListener(this.schemaListener); this.setButtonsOnFlavor(); } private BaseDeclaration getDeclOfPath(TreePath var1) { if (var1 == null) { return null; } else { Object var2 = var1.getLastPathComponent(); return var2 instanceof DefaultMutableTreeNode ? (BaseDeclaration)((DefaultMutableTreeNode)var2).getUserObject() : null; } } boolean getShowDecls() { return true; } public void declarationFocused(BaseDeclaration var1) { this.currentDecl = var1; super.declarationFocused(var1); } protected boolean hasDeclTable() { return false; } protected void doInclude() { SchemaDoc var1 = ((CompositePane)this).getSchemaDoc(); SchemaIntf var2 = var1.getSchema(); SchemaFlavorIntf var3 = var2.getFlavor(); String var4 = var3.getFlavorName(); ExternalSubset var5 = this.currentDecl == null ? null : var2.getStructure().findParent(this.currentDecl.getURI()); if (var5 != null && !var1.isEditable(var5.getSystemURI())) { DialogFactory.stop(this.getComponent(), UI.getString("stop.ro.dest.uri", this.currentDecl.getURI().getShortName())); } else if (!var3.isSupported(Class.forName("com.extensibility.xml.ExternalSubset"))) { ((CompositePane)this).beep(); } else { OpenURIDialog var6 = new OpenURIDialog(((CompositePane)this).getSchemaWin(), ((BaseDocument)var1).getURI(), new String[]{var4}, true); ((SaveURIDialog)var6).show(); URI var7 = ((SaveURIDialog)var6).getURI(); boolean var8 = var6.isNew(); if (var7 != null) { if (var8) { try { Schema var9 = new Schema(var7, var3.getFlavorName()); Writer var10 = var7.createWriter(); var9.write(var10); var10.close(); } catch (FileNotFoundException var12) { DialogFactory.stop(this.getComponent(), UI.getString("stop.bad.module.name", var7.getShortName())); return; } catch (IOException var13) { DialogFactory.showException(((CompositePane)this).getSchemaWin(), 133, var13); return; } } String var14 = DTDUtilities.generateValidName(var7.getShortName()); if (!SchemaUtilities.compatibleFlavor(var3, var7, true)) { String var17 = SchemaUtilities.getFlavor(var7, true); DialogFactory.stop(this.getComponent(), UI.getString("stop.wrong.flavor", var17 == null ? "" : var17)); } else if (!var1.isSupported("GESTALT_MULTI_INSTANCE_MODULES") && var1.getStructure().findParent(var7) != null) { DialogFactory.stop(this.getComponent(), UI.getString("stop.module.exists", var7.toSource())); } else if (var1.getName().equals(var14)) { DialogFactory.stop(this.getComponent(), UI.getString("error.name.exists", var14)); } else { if (!var1.isSupported("GESTALT_MULTI_INSTANCE_MODULES")) { String var15 = var14; for(int var11 = 2; var1.getNamedDeclaration(var14, Class.forName("com.extensibility.xml.ParameterEntityDeclaration")) != null; var14 = String.valueOf(var15).concat(String.valueOf(var11++))) { } } AddModuleUndoable var16 = new AddModuleUndoable(this, ((CompositePane)this).getSchemaWin(), var7, var1.getFocusedURI(true), var14); ((BaseDocument)var1).getUndoManager().addEdit(var16); var16.doCommand(); if (var8) { var1.unlockModule(var7); } } } } } protected void doImport() { SchemaFlavorIntf var1 = ((CompositePane)this).getSchemaDoc().getSchema().getFlavor(); String var2 = var1.getFlavorName(); if (!var1.isSupported(Class.forName("com.extensibility.xml.NamespaceDeclaration"))) { ((CompositePane)this).beep(); } else { URI var3 = DialogFactory.openURI(this.getComponent(), ((CompositePane)this).getSchemaDoc().getURI(), new String[]{var2}, UI.getString("overview.import")); if (var3 != null) { String var4 = DTDUtilities.makeValidName(var3.getShortName()); if (var3.exists() && !SchemaUtilities.compatibleFlavor(var1, var3, true)) { DialogFactory.stop(this.getComponent(), UI.getString("stop.wrong.flavor", SchemaUtilities.getFlavor(var3, true))); } else { BaseUndoable var5 = this.createAddNamespaceUndoable(var3, ((CompositePane)this).getSchemaDoc().getFocusedURI(true)); ((CompositePane)this).getSchemaDoc().getUndoManager().addEdit(var5); ((BaseEdit)var5).doCommand(); } } } } public BaseUndoable createAddNamespaceUndoable(URI var1, URI var2) { return new AddNamespaceUndoable(this, ((CompositePane)this).getSchemaWin(), var1, var2); } protected NamespaceDeclaration doAddNamespace(String var1, URI var2, URI var3) { NamespaceDeclaration var4 = new NamespaceDeclaration(var1, var2.toSource()); ((BaseDeclaration)var4).setURI(var3); ((CompositePane)this).getSchemaDoc().insertDeclaration(var4, (BaseDeclaration)null); return var4; } protected ExternalPEDeclaration doAddModule(URI var1, URI var2, String var3) { ExternalPEDeclaration var4 = new ExternalPEDeclaration(var3, (String)null, var1); ((BaseDeclaration)var4).setURI(var2); ((CompositePane)this).getSchemaDoc().insertDeclaration(var4, this.currentDecl); try { int var5 = ((CompositePane)this).getSchemaDoc().insertSubset(var4); if (var5 > 0) { DialogFactory.caution((Component)null, UI.getString("caution.extsubset.errors", (new Integer(var5)).toString(), ((BaseDeclaration)var4).getName())); } ExternalSubset var6 = (ExternalSubset)((CompositePane)this).getSchemaDoc().getNamedDeclaration(((BaseDeclaration)var4).getName(), Class.forName("com.extensibility.xml.ExternalSubset")); this.select(var6); } catch (UnknownHostException var7) { DialogFactory.note((Component)null, UI.getString("note.url.not.found", var1.getFullName())); } catch (FileNotFoundException var8) { DialogFactory.note(this.getComponent(), UI.getString("note.uri.not.found", var1.getShortName())); } catch (IOException var9) { DialogFactory.showException((Component)null, 107, var9); } return var4; } protected void doRemove() { if (this.currentDecl != null && this.currentDecl != ((CompositePane)this).getSchemaDoc().getStructure()) { if (!((CompositePane)this).getSchemaDoc().isEditable(this.currentDecl)) { DialogFactory.showException(this.getComponent(), 106, UI.getString("error.decl.not.editable"), this.currentDecl.getName()); } else { if (this.currentDecl instanceof InternalPEDeclaration) { Enumeration var1 = ((CompositePane)this).getSchemaDoc().getUsedBy((InternalPEDeclaration)this.currentDecl); if (var1.hasMoreElements()) { String var2 = UI.getString("stop.delete.in.use", this.currentDecl.getName(), ((BaseDeclaration)var1.nextElement()).getName()); DialogFactory.stop(this.getComponent(), var2); return; } } ClearDeclsUndoable var3 = this.createRemoveDeclUndoable(this.currentDecl); var3.doCommand(); ((CompositePane)this).getSchemaDoc().getUndoManager().addEdit(var3); this.currentDecl = null; } } else { ((CompositePane)this).beep(); } } public ClearDeclsUndoable createRemoveDeclUndoable(BaseDeclaration var1) { return new TreeRemoveDeclsUndoable((OverviewPane)null, var1, ((CompositePane)this).getSchemaWin()); } protected void doRemoveNamespace(NamespaceDeclaration var1) { if (var1 == null) { ((CompositePane)this).beep(); } else { ((CompositePane)this).getSchemaDoc().removeDeclaration(var1); } } protected void doRemoveDecl(BaseDeclaration var1) { if (var1 == null) { ((CompositePane)this).beep(); } else { if (var1 instanceof ExternalSubset) { ((CompositePane)this).getSchemaDoc().removeSubset((ExternalSubset)var1); } else { ((CompositePane)this).getSchemaDoc().removeDeclaration(var1); if (var1 instanceof ExternalPEDeclaration) { ExternalSubset var2 = (ExternalSubset)((CompositePane)this).getSchemaDoc().getNamedDeclaration(var1.getName(), Class.forName("com.extensibility.xml.ExternalSubset")); ((CompositePane)this).getSchemaDoc().removeSubset(var2); } } } } public boolean select(BaseDeclaration var1) { if (var1 == null) { this.tree.clearSelection(); return false; } else { DefaultMutableTreeNode var2 = this.treeModel.findNode(var1); if (var2 != null) { DefaultTreeModel var3 = (DefaultTreeModel)this.tree.getModel(); TreePath var4 = new TreePath(var3.getPathToRoot(var2)); this.tree.setSelectionPath(var4); return true; } else { return false; } } } public void cut() { this.copy(); this.clear(); } public void copy() { Clipboard var1 = Screen.getClip(); BaseDeclaration var2 = this.getDeclOfPath(this.tree.getLeadSelectionPath()); if (var2 != null && !(var2 instanceof ExternalSubset)) { ClipData var3 = new ClipData(((CompositePane)this).getSchemaDoc(), var2); var1.setContents(var3, this); } else { ((CompositePane)this).beep(); } } public void paste() { ((CompositePane)this).getSchemaDoc().touch(((CompositePane)this).getSchemaDoc().getFocusedURI(true)); Clipboard var1 = Screen.getClip(); Transferable var2 = var1.getContents(this); if (var2 != null && var2 instanceof ClipData) { try { BaseDeclaration var3 = this.getDeclOfPath(this.tree.getLeadSelectionPath()); Object var4 = null; Vector var5 = (Vector)var2.getTransferData((DataFlavor)null); for(int var6 = 0; var6 < var5.size(); ++var6) { BaseDeclaration var7 = (BaseDeclaration)var5.elementAt(var6); if (var6 == 0) { ; } if (var7 instanceof ExternalSubset) { ((CompositePane)this).beep(); } else { ((CompositePane)this).getSchemaDoc().insertDeclaration(var7, var3, (Boolean)null, (Boolean)null, ((ClipData)var2).getSchemaDoc()); } } } catch (Exception var8) { DialogFactory.showException(this.getComponent(), 100, var8); } } else { ((CompositePane)this).beep(); } } public void clear() { ((CompositePane)this).getSchemaDoc().touch(this.currentDecl); this.doRemove(); } public void lostOwnership(Clipboard var1, Transferable var2) { } private void setButtonsOnFlavor() { SchemaIntf var1 = ((CompositePane)this).getSchemaDoc().getSchema(); SchemaFlavorIntf var2 = var1.getFlavor(); RButton var3 = null; RButton var4 = null; if (var2.isSupported(Class.forName("com.extensibility.xml.ExternalSubset"))) { var4 = new RButton(this.includeAction); } if (var2.isSupported(Class.forName("com.extensibility.xml.NamespaceDeclaration"))) { if (var4 == null) { var4 = new RButton(this.importAction); } else { var3 = new RButton(this.importAction); } } CompositePane.setHeader(this.scrollTree, var3, var4); } public void focusDeclaration(BaseDeclaration var1) { this.select(var1); } // $FF: synthetic method static void access$2000171(OverviewPane var0) { var0.setButtonsOnFlavor(); } // $FF: synthetic method static BaseDeclaration access$2000071(OverviewPane var0, TreePath var1) { return var0.getDeclOfPath(var1); } }