jsxe-cvs Mailing List for jsXe (Page 2)
Status: Inactive
Brought to you by:
ian_lewis
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(29) |
Dec
(63) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(4) |
Feb
(23) |
Mar
(19) |
Apr
(102) |
May
(88) |
Jun
(30) |
Jul
(42) |
Aug
(43) |
Sep
(17) |
Oct
(19) |
Nov
(41) |
Dec
(46) |
2005 |
Jan
(32) |
Feb
(8) |
Mar
(110) |
Apr
(102) |
May
(139) |
Jun
(45) |
Jul
(5) |
Aug
(1) |
Sep
(9) |
Oct
(30) |
Nov
(18) |
Dec
|
2006 |
Jan
(10) |
Feb
(85) |
Mar
(9) |
Apr
(64) |
May
(24) |
Jun
(95) |
Jul
(107) |
Aug
(123) |
Sep
(37) |
Oct
(15) |
Nov
(1) |
Dec
|
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <ian...@us...> - 2006-09-07 00:11:21
|
Revision: 1247 http://svn.sourceforge.net/jsxe/?rev=1247&view=rev Author: ian_lewis Date: 2006-09-06 17:11:17 -0700 (Wed, 06 Sep 2006) Log Message: ----------- Updated XMLDocument property methods Modified Paths: -------------- branches/jsxe2/src/net/sourceforge/jsxe/DocumentBuffer.java branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java Modified: branches/jsxe2/src/net/sourceforge/jsxe/DocumentBuffer.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/DocumentBuffer.java 2006-09-07 00:10:46 UTC (rev 1246) +++ branches/jsxe2/src/net/sourceforge/jsxe/DocumentBuffer.java 2006-09-07 00:11:17 UTC (rev 1247) @@ -643,21 +643,21 @@ //}}} //{{{ format output - boolean formatOutput = Boolean.valueOf(getProperty(XMLDocument.FORMAT_XML, "false")).booleanValue(); + boolean formatOutput = getBooleanProperty(XMLDocument.FORMAT_XML); formatCheckBox = new JCheckBox(Messages.getMessage("Document.Options.Format.XML"), formatOutput); addComponent(formatCheckBox, Messages.getMessage("Document.Options.Format.XML.ToolTip")); //}}} //{{{ validate - boolean validating = Boolean.valueOf(getProperty(XMLDocument.IS_VALIDATING, "false")).booleanValue(); + boolean validating = getBooleanProperty(XMLDocument.IS_VALIDATING); m_m_validatingCheckBox = new JCheckBox(Messages.getMessage("Document.Options.Validate"), validating); addComponent(m_m_validatingCheckBox, Messages.getMessage("Document.Options.Validate.ToolTip")); //}}} //{{{ soft tabs - boolean softTabs = Boolean.valueOf(getProperty(XMLDocument.IS_USING_SOFT_TABS, "false")).booleanValue(); + boolean softTabs = getBooleanProperty(XMLDocument.IS_USING_SOFT_TABS); m_m_softTabsCheckBox = new JCheckBox(Messages.getMessage("Document.Options.Soft.Tabs"), softTabs); addComponent(m_m_softTabsCheckBox, Messages.getMessage("Document.Options.Soft.Tabs.ToolTip")); Modified: branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-09-07 00:10:46 UTC (rev 1246) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-09-07 00:11:17 UTC (rev 1247) @@ -318,21 +318,11 @@ * @return the value of the property for the given key. */ public String getProperty(String key) { - return props.getProperty(key); + synchronized(propertyLock) { + return props.getProperty(key, jsXe.getProperty("xml.document." + key)); + } }//}}} - //{{{ getProperty() - /** - * Gets a property for the key given or returns the default value - * if there is no property for the given key. - * @param key the key to the properties list - * @param defaultValue the default value for the property requested - * @return the value of the property for the given key. - */ - public String getProperty(String key, String defaultValue) { - return props.getProperty(key, defaultValue); - }//}}} - //{{{ setProperty() /** * Sets a property of the XMLDocument This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-07 00:10:49
|
Revision: 1246 http://svn.sourceforge.net/jsxe/?rev=1246&view=rev Author: ian_lewis Date: 2006-09-06 17:10:46 -0700 (Wed, 06 Sep 2006) Log Message: ----------- Added multi threading support to properties in AdapterNodes Modified Paths: -------------- branches/jsxe2/src/net/sourceforge/jsxe/dom/AdapterNode.java Modified: branches/jsxe2/src/net/sourceforge/jsxe/dom/AdapterNode.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/AdapterNode.java 2006-09-07 00:03:48 UTC (rev 1245) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/AdapterNode.java 2006-09-07 00:10:46 UTC (rev 1246) @@ -158,7 +158,9 @@ * @return the value of the property for the given key. */ public String getProperty(String key) { - return m_props.getProperty(key); + synchronized(propertyLock) { + return m_props.getProperty(key); + } }//}}} //{{{ getProperty() @@ -170,7 +172,9 @@ * @return the value of the property for the given key. */ public String getProperty(String key, String defaultValue) { - return m_props.getProperty(key, defaultValue); + synchronized(propertyLock) { + return m_props.getProperty(key, defaultValue); + } }//}}} //{{{ setProperty() @@ -1162,5 +1166,7 @@ private Node m_domNode; private ArrayList m_listeners = new ArrayList(); private Properties m_props = new Properties(); + + private Object propertyLock = new Object(); //}}} } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-07 00:03:52
|
Revision: 1245 http://svn.sourceforge.net/jsxe/?rev=1245&view=rev Author: ian_lewis Date: 2006-09-06 17:03:48 -0700 (Wed, 06 Sep 2006) Log Message: ----------- Updated to not use the show() method since it's deprecated Modified Paths: -------------- branches/sourceview2/Changelog branches/sourceview2/src/sourceview/SourceViewOptionPane.java Modified: branches/sourceview2/Changelog =================================================================== --- branches/sourceview2/Changelog 2006-09-07 00:01:54 UTC (rev 1244) +++ branches/sourceview2/Changelog 2006-09-07 00:03:48 UTC (rev 1245) @@ -1,3 +1,7 @@ +09/06/2006 Ian Lewis <Ian...@me...> + + * Updated to not use show() method since it's deprecated. + 08/31/2006 Ian Lewis <Ian...@me...> * Updated the sourceview actions to use the new ContextSpecificActions in Modified: branches/sourceview2/src/sourceview/SourceViewOptionPane.java =================================================================== --- branches/sourceview2/src/sourceview/SourceViewOptionPane.java 2006-09-07 00:01:54 UTC (rev 1244) +++ branches/sourceview2/src/sourceview/SourceViewOptionPane.java 2006-09-07 00:03:48 UTC (rev 1245) @@ -329,7 +329,7 @@ setLocationRelativeTo(getParentDialog(comp)); setResizable(false); - show(); + setVisible(true); } //}}} //{{{ actionPerformed() method @@ -604,7 +604,7 @@ true); } dialog.pack(); - dialog.show(); + dialog.setVisible(true); } } //}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-07 00:02:04
|
Revision: 1244 http://svn.sourceforge.net/jsxe/?rev=1244&view=rev Author: ian_lewis Date: 2006-09-06 17:01:54 -0700 (Wed, 06 Sep 2006) Log Message: ----------- Updated to not use the show() method since it's deprecated Modified Paths: -------------- branches/treeview2/Changelog branches/treeview2/src/treeview/action/AddDocTypeAction.java branches/treeview2/src/treeview/action/AddNodeAction.java branches/treeview2/src/treeview/action/EditNodeAction.java Modified: branches/treeview2/Changelog =================================================================== --- branches/treeview2/Changelog 2006-09-06 23:23:23 UTC (rev 1243) +++ branches/treeview2/Changelog 2006-09-07 00:01:54 UTC (rev 1244) @@ -1,3 +1,7 @@ +09/06/2006 Ian Lewis <Ian...@me...> + + * Updated to not use show() method since it's deprecated. + 08/31/2006 Ian Lewis <Ian...@me...> * Updated the sourceview actions to use the new ContextSpecificActions in Modified: branches/treeview2/src/treeview/action/AddDocTypeAction.java =================================================================== --- branches/treeview2/src/treeview/action/AddDocTypeAction.java 2006-09-06 23:23:23 UTC (rev 1243) +++ branches/treeview2/src/treeview/action/AddDocTypeAction.java 2006-09-07 00:01:54 UTC (rev 1244) @@ -223,7 +223,7 @@ updateSize(); - show(); + setVisible(true); }//}}} @@ -326,6 +326,5 @@ }//}}} - //}}} } Modified: branches/treeview2/src/treeview/action/AddNodeAction.java =================================================================== --- branches/treeview2/src/treeview/action/AddNodeAction.java 2006-09-06 23:23:23 UTC (rev 1243) +++ branches/treeview2/src/treeview/action/AddNodeAction.java 2006-09-07 00:01:54 UTC (rev 1244) @@ -130,7 +130,7 @@ m_element.completionInfo.getEntityHash(), new ArrayList(), //don't support IDs for now. document); - dialog.show(); + dialog.setVisible(true); isOk = (dialog.getNewNode() != null); if (isOk) { addedNode = selectedNode.addAdapterNode(dialog.getNewNode()); Modified: branches/treeview2/src/treeview/action/EditNodeAction.java =================================================================== --- branches/treeview2/src/treeview/action/EditNodeAction.java 2006-09-06 23:23:23 UTC (rev 1243) +++ branches/treeview2/src/treeview/action/EditNodeAction.java 2006-09-07 00:01:54 UTC (rev 1244) @@ -101,7 +101,7 @@ new ArrayList(), //don't support IDs for now. selectedNode.getOwnerDocument(), selectedNode); - dialog.show(); + dialog.setVisible(true); } finally { document.endCompoundEdit(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-06 23:23:28
|
Revision: 1243 http://svn.sourceforge.net/jsxe/?rev=1243&view=rev Author: ian_lewis Date: 2006-09-06 16:23:23 -0700 (Wed, 06 Sep 2006) Log Message: ----------- Updated javadoc Modified Paths: -------------- branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java Modified: branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-09-06 23:22:12 UTC (rev 1242) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-09-06 23:23:23 UTC (rev 1243) @@ -1183,6 +1183,7 @@ /** * The buffer is guaranteed not to change between calls to * {@link #readLock()} and {@link #readUnlock()}. + * @since jsXe XX.XX */ public void readLock() { lock.readLock(); @@ -1192,6 +1193,7 @@ /** * The buffer is guaranteed not to change between calls to * {@link #readLock()} and {@link #readUnlock()}. + * @since jsXe XX.XX */ public void readUnlock() { lock.readUnlock(); @@ -1201,6 +1203,7 @@ /** * Attempting to obtain read lock will block between calls to * {@link #writeLock()} and {@link #writeUnlock()}. + * @since jsXe XX.XX */ public void writeLock() { lock.writeLock(); @@ -1210,6 +1213,7 @@ /** * Attempting to obtain read lock will block between calls to * {@link #writeLock()} and {@link #writeUnlock()}. + * @since jsXe XX.XX */ public void writeUnlock() { lock.writeUnlock(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-06 23:22:20
|
Revision: 1242 http://svn.sourceforge.net/jsxe/?rev=1242&view=rev Author: ian_lewis Date: 2006-09-06 16:22:12 -0700 (Wed, 06 Sep 2006) Log Message: ----------- Made XMLDocument thread safe Modified Paths: -------------- branches/jsxe2/Changelog branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java branches/jsxe2/src/net/sourceforge/jsxe/util/ReadWriteLock.java Modified: branches/jsxe2/Changelog =================================================================== --- branches/jsxe2/Changelog 2006-09-06 19:34:32 UTC (rev 1241) +++ branches/jsxe2/Changelog 2006-09-06 23:22:12 UTC (rev 1242) @@ -1,3 +1,9 @@ +09/06/2006 Ian Lewis <Ian...@me...> + + * Added threading support to XMLDocument. Multi-threaded support is not + complete yet however. Currently jsXe only runs in the AWT thread. + * AdapterNode now uses the DOM3 renameNode() method to rename element nodes. + 08/31/2006 Ian Lewis <Ian...@me...> * Added new ContextSpecificActions to replace ViewSpecificActions. Now Modified: branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-09-06 19:34:32 UTC (rev 1241) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-09-06 23:22:12 UTC (rev 1242) @@ -33,6 +33,7 @@ import net.sourceforge.jsxe.msg.UndoEvent; import net.sourceforge.jsxe.util.Log; import net.sourceforge.jsxe.util.MiscUtilities; +import net.sourceforge.jsxe.util.ReadWriteLock; import net.sourceforge.jsxe.dom.completion.*; import net.sourceforge.jsxe.dom.undo.*; import net.sourceforge.jsxe.dom.ls.*; @@ -340,54 +341,63 @@ * @return the old value of the property */ public String setProperty(String key, String value) { - String oldValue = getProperty(key); - if (oldValue == null || !oldValue.equals(value)) { - // do this first so NullPointerExceptions are thrown - oldValue = (String)props.setProperty(key, value); + synchronized(propertyLock) { + String oldValue = getProperty(key); - if (key.equals(ENCODING)) { - m_syncedWithContent = false; - } - if (key.equals(FORMAT_XML)) { - m_syncedWithContent = false; - if (Boolean.valueOf(value).booleanValue()) { - setProperty(WS_IN_ELEMENT_CONTENT, "false"); + if (oldValue == null || !oldValue.equals(value)) { + // do this first so NullPointerExceptions are thrown + oldValue = (String)props.setProperty(key, value); + + if (key.equals(ENCODING)) { + m_syncedWithContent = false; } - } - if (key.equals(WS_IN_ELEMENT_CONTENT)) { - m_syncedWithContent = false; - if (Boolean.valueOf(value).booleanValue()) { - setProperty(FORMAT_XML, "false"); + if (key.equals(FORMAT_XML)) { + m_syncedWithContent = false; + if (Boolean.valueOf(value).booleanValue()) { + setProperty(WS_IN_ELEMENT_CONTENT, "false"); + } } - } - if (key.equals(IS_USING_SOFT_TABS)) { - m_syncedWithContent = false; - } - if (key.equals(IS_VALIDATING)) { - //This is ugly. Need to rethink how this should happen. - if (Boolean.valueOf(value).booleanValue()) { - //syncContentWithDOM could change m_parsedMode - syncContentWithDOM(); - } else { - /* - If we are turning off validation then just clear the errors list. - No need to reparse or serialize. - */ - m_parseErrors = new ArrayList(); - m_parseFatalErrors = new ArrayList(); + if (key.equals(WS_IN_ELEMENT_CONTENT)) { + m_syncedWithContent = false; + if (Boolean.valueOf(value).booleanValue()) { + setProperty(FORMAT_XML, "false"); + } } - } - if (key.equals(INDENT)) { - if (MiscUtilities.isTrue(getProperty(FORMAT_XML)) - && MiscUtilities.isTrue(getProperty(IS_USING_SOFT_TABS))) - { + if (key.equals(IS_USING_SOFT_TABS)) { m_syncedWithContent = false; } + if (key.equals(IS_VALIDATING)) { + //This is ugly. Need to rethink how this should happen. + if (Boolean.valueOf(value).booleanValue()) { + //syncContentWithDOM could change m_parsedMode + try { + writeLock(); + + syncContentWithDOM(); + } finally { + writeUnlock(); + } + } else { + /* + If we are turning off validation then just clear the errors list. + No need to reparse or serialize. + */ + m_parseErrors = new ArrayList(); + m_parseFatalErrors = new ArrayList(); + } + } + if (key.equals(INDENT)) { + if (MiscUtilities.isTrue(getProperty(FORMAT_XML)) + && MiscUtilities.isTrue(getProperty(IS_USING_SOFT_TABS))) + { + m_syncedWithContent = false; + } + } + firePropertyChanged(key, oldValue); } - firePropertyChanged(key, oldValue); + return oldValue; } - return oldValue; }//}}} //{{{ getBooleanProperty() method @@ -461,14 +471,21 @@ */ public String getText(int start, int length) throws IOException { - if (start < 0 || length < 0 || start + length > m_content.getLength()) { - throw new ArrayIndexOutOfBoundsException(start + ":" + length); + try { + + writeLock(); + + if (start < 0 || length < 0 || start + length > m_content.getLength()) { + throw new ArrayIndexOutOfBoundsException(start + ":" + length); + } + + //if the document is well formed we go by the DOM + //if it's not we go by the source text. + syncContentWithDOM(); + return m_content.getText(start,length); + } finally { + writeUnlock(); } - - //if the document is well formed we go by the DOM - //if it's not we go by the source text. - syncContentWithDOM(); - return m_content.getText(start,length); }//}}} //{{{ getSegment() @@ -482,19 +499,25 @@ * @return the segment representing the text requested */ public Segment getSegment(int start, int length) throws IOException { - - if (start < 0 || length < 0 || start + length > m_content.getLength()) { - throw new ArrayIndexOutOfBoundsException(start + ":" + length); + try { + + writeLock(); + + if (start < 0 || length < 0 || start + length > m_content.getLength()) { + throw new ArrayIndexOutOfBoundsException(start + ":" + length); + } + + //if the document is well formed we go by the DOM + //if it's not we go by the source text. + if (m_parsedMode) { + syncContentWithDOM(); + } + Segment seg = new Segment(); + m_content.getText(start, length, seg); + return seg; + } finally { + writeUnlock(); } - - //if the document is well formed we go by the DOM - //if it's not we go by the source text. - if (m_parsedMode) { - syncContentWithDOM(); - } - Segment seg = new Segment(); - m_content.getText(start, length, seg); - return seg; }//}}} //{{{ getLength() @@ -503,10 +526,17 @@ * @return the length of the document */ public int getLength() { - - syncContentWithDOM(); - - return m_content.getLength(); + try { + writeLock(); + + syncContentWithDOM(); + + // no need to lock since this just returns a value and that's it + return m_content.getLength(); + } finally { + Log.log(Log.DEBUG, this, "writeUnlock()"); + writeUnlock(); + } }//}}} //{{{ insertText() @@ -517,16 +547,27 @@ * @throws IOException if the text could not be inserted */ public void insertText(int offset, String text) throws IOException { - if (text.length() > 0) { - Log.log(Log.DEBUG, this, "insertText: "+offset+": "+text); - syncContentWithDOM(); - m_content.insert(offset, text); - m_parsedMode = false; - m_adapterNode = null; - if (!getFlag(UNDO_IN_PROGRESS)) { - addUndoableEdit(new InsertEdit(this, offset, text)); + + try { + writeLock(); + + if (offset < 0 || offset > m_content.getLength()) { + throw new ArrayIndexOutOfBoundsException(offset); } - fireStructureChanged(null); + + if (text.length() > 0) { + // Log.log(Log.DEBUG, this, "insertText: "+offset+": "+text); + syncContentWithDOM(); + m_content.insert(offset, text); + m_parsedMode = false; + m_adapterNode = null; + if (!getFlag(UNDO_IN_PROGRESS)) { + addUndoableEdit(new InsertEdit(this, offset, text)); + } + fireStructureChanged(null); + } + } finally { + writeUnlock(); } }//}}} @@ -538,21 +579,35 @@ * @throws IOException if the text could not be removed */ public void removeText(int offset, int length) throws IOException { - if (length > 0) { - String text = getText(offset,length); - Log.log(Log.DEBUG, this, "removeText: "+offset+": "+text); - m_content.remove(offset, length); - m_parsedMode = false; - m_adapterNode = null; - if (!getFlag(UNDO_IN_PROGRESS)) { - addUndoableEdit(new RemoveEdit(this, offset, text)); + + try { + + writeLock(); + + if (offset < 0 || length < 0 || offset + length > m_content.getLength()) { + throw new ArrayIndexOutOfBoundsException(offset + ":" + length); } - fireStructureChanged(null); + + if (length > 0) { + String text = getText(offset,length); + Log.log(Log.DEBUG, this, "removeText: "+offset+": "+text); + m_content.remove(offset, length); + m_parsedMode = false; + m_adapterNode = null; + if (!getFlag(UNDO_IN_PROGRESS)) { + addUndoableEdit(new RemoveEdit(this, offset, text)); + } + fireStructureChanged(null); + } + } finally { + writeUnlock(); } }//}}} //}}} + //{{{ XML Document Methods + //{{{ checkWellFormedness() /** * Checks the wellformedness of the document and throws appropriate @@ -564,14 +619,18 @@ * @throws IOException if there was a problem reading the document */ public boolean checkWellFormedness() throws SAXParseException, SAXException, ParserConfigurationException, IOException { - if (!m_parsedMode) { - parseDocument(); - m_adapterNode = new AdapterNode(this, m_document); - // m_adapterNode.addAdapterNodeListener(docAdapterListener); - // m_syncedWithContent = true; - m_parsedMode=true; + try { + readLock(); + + if (!m_parsedMode) { + parseDocument(); + m_adapterNode = new AdapterNode(this, m_document); + m_parsedMode=true; + } + return m_parsedMode; + } finally { + readUnlock(); } - return m_parsedMode; }//}}} //{{{ getDocType() @@ -700,9 +759,14 @@ * @since jsXe 0.4 pre3 */ public List getErrors() { - syncContentWithDOM(); - parseWithoutUpdate(); - return m_parseErrors; + try { + writeLock(); + syncContentWithDOM(); + parseWithoutUpdate(); + return m_parseErrors; + } finally { + writeUnlock(); + } }//}}} //{{{ isWellFormed() @@ -735,16 +799,21 @@ */ public boolean isValid() throws IOException { if (Boolean.valueOf(getProperty(IS_VALIDATING)).booleanValue()) { - /* - This needs to be done every time we check for validity even - if this document hasn't changed since the DTD or Schema document - we are validating against may have changed in the meantime. - */ - - syncContentWithDOM(); - parseWithoutUpdate(); - - return (m_parseErrors.size() == 0 && m_parseFatalErrors.size() == 0); + try { + writeLock(); + /* + This needs to be done every time we check for validity even + if this document hasn't changed since the DTD or Schema document + we are validating against may have changed in the meantime. + */ + + syncContentWithDOM(); + parseWithoutUpdate(); + + return (m_parseErrors.size() == 0 && m_parseFatalErrors.size() == 0); + } finally { + writeUnlock(); + } } else { return false; } @@ -813,6 +882,20 @@ return getNoNamespaceCompletionInfo().getEntities(); }//}}} + //{{{ setEntityResolver() + /** + * Sets the EntityResolver object that is used when resolving external + * entities. + * @param resolver the entity resolver + */ + public void setEntityResolver(EntityResolver resolver) { + m_entityResolver = resolver; + }//}}} + + //}}} + + //{{{ I/O Methods + //{{{ serialize() /** * Writes the XML document to the output stream specified. @@ -823,79 +906,86 @@ */ public void serialize(OutputStream out) throws IOException, UnsupportedEncodingException { - boolean parsedBeforeSerialization = m_parsedMode; - - String newLine = getProperty(LINE_SEPARATOR); - - syncContentWithDOM(); - - String encoding = getProperty(ENCODING); - if (encoding.equals(MiscUtilities.UTF_8_Y)) { - // not supported by Java... - out.write(UTF8_MAGIC_1); - out.write(UTF8_MAGIC_2); - out.write(UTF8_MAGIC_3); - out.flush(); - encoding = "UTF-8"; - } - - //now just write out the text. - int length = m_content.getLength(); - int index = 0; - BufferedWriter outbuf = new BufferedWriter(new OutputStreamWriter(out, encoding), IO_BUFFER_SIZE); - Segment seg = new Segment(); - - while (index < length) { - int size = WRITE_SIZE; - try { - size = Math.min(length - index, WRITE_SIZE); - } catch(NumberFormatException nf) { - Log.log(Log.ERROR, this, nf); + try { + + writeLock(); + + boolean parsedBeforeSerialization = m_parsedMode; + + String newLine = getProperty(LINE_SEPARATOR); + + syncContentWithDOM(); + + String encoding = getProperty(ENCODING); + if (encoding.equals(MiscUtilities.UTF_8_Y)) { + // not supported by Java... + out.write(UTF8_MAGIC_1); + out.write(UTF8_MAGIC_2); + out.write(UTF8_MAGIC_3); + out.flush(); + encoding = "UTF-8"; } - // out.write(m_content.getText(index, size).getBytes(getProperty(ENCODING)), index, size); - m_content.getText(index, size, seg); + //now just write out the text. + int length = m_content.getLength(); + int index = 0; + BufferedWriter outbuf = new BufferedWriter(new OutputStreamWriter(out, encoding), IO_BUFFER_SIZE); + Segment seg = new Segment(); - int startOffset = seg.offset; - int endOffset = size + seg.offset; - - for (int i=startOffset; i<endOffset; i++) { - if (seg.array[i]=='\n') { - outbuf.write(seg.array, seg.offset, i - seg.offset); - outbuf.write(newLine.toCharArray(), 0, newLine.length()); - - //add 1 because of \n character, - seg.count -= i-seg.offset+1; - seg.offset += i-seg.offset+1; + while (index < length) { + int size = WRITE_SIZE; + try { + size = Math.min(length - index, WRITE_SIZE); + } catch(NumberFormatException nf) { + Log.log(Log.ERROR, this, nf); } + + // out.write(m_content.getText(index, size).getBytes(getProperty(ENCODING)), index, size); + m_content.getText(index, size, seg); + + int startOffset = seg.offset; + int endOffset = size + seg.offset; + + for (int i=startOffset; i<endOffset; i++) { + if (seg.array[i]=='\n') { + outbuf.write(seg.array, seg.offset, i - seg.offset); + outbuf.write(newLine.toCharArray(), 0, newLine.length()); + + //add 1 because of \n character, + seg.count -= i-seg.offset+1; + seg.offset += i-seg.offset+1; + } + } + + //write the rest + outbuf.write(seg.array, seg.offset, seg.count); + index += size; } - //write the rest - outbuf.write(seg.array, seg.offset, seg.count); - index += size; - } - - outbuf.close(); - - //if something changed in the structure while serializing - //basically we don't want serialize() to cause the XMLDocument - //to go from parsed mode to non-parsed mode - if (!m_parsedMode && parsedBeforeSerialization) { - try { - checkWellFormedness(); - } catch (SAXException saxe) { - throw new IOException(saxe.getMessage()); - } catch (ParserConfigurationException pce) { - throw new IOException(pce.getMessage()); - } finally { - /* - if there is an error parsing we want to be in parsed mode - using the old DOM before serializing. - if there is no error, we want to be in parsed mode with the - new DOM. - */ - m_parsedMode = true; + outbuf.close(); + + //if something changed in the structure while serializing + //basically we don't want serialize() to cause the XMLDocument + //to go from parsed mode to non-parsed mode + if (!m_parsedMode && parsedBeforeSerialization) { + try { + checkWellFormedness(); + } catch (SAXException saxe) { + throw new IOException(saxe.getMessage()); + } catch (ParserConfigurationException pce) { + throw new IOException(pce.getMessage()); + } finally { + /* + if there is an error parsing we want to be in parsed mode + using the old DOM before serializing. + if there is no error, we want to be in parsed mode with the + new DOM. + */ + m_parsedMode = true; + } } + } finally { + writeUnlock(); } }//}}} @@ -916,36 +1006,6 @@ return value; }//}}} - //{{{ setEntityResolver() - /** - * Sets the EntityResolver object that is used when resolving external - * entities. - * @param resolver the entity resolver - */ - public void setEntityResolver(EntityResolver resolver) { - m_entityResolver = resolver; - }//}}} - - //{{{ setURI() - /** - * Sets the URI for the location of this document. - * @param uri the uri specifying the location of this document. Can be null. - * @since jsXe 0.4 pre4 - */ - public void setURI(URI uri) { - m_uri = uri; - }//}}} - - //{{{ getURI() - /** - * Gets the URI for the location of this document. - * @return the uri specifying the location of this document. Can be null. - * @since jsXe 0.4 pre4 - */ - public URI getURI() { - return m_uri; - }//}}} - //{{{ setModel() /** * Sets up the XMLDocument given a Reader. The existing content is @@ -1115,6 +1175,68 @@ // } }//}}} + //}}} + + //{{{ Thread safety + + //{{{ readLock() method + /** + * The buffer is guaranteed not to change between calls to + * {@link #readLock()} and {@link #readUnlock()}. + */ + public void readLock() { + lock.readLock(); + } //}}} + + //{{{ readUnlock() method + /** + * The buffer is guaranteed not to change between calls to + * {@link #readLock()} and {@link #readUnlock()}. + */ + public void readUnlock() { + lock.readUnlock(); + } //}}} + + //{{{ writeLock() method + /** + * Attempting to obtain read lock will block between calls to + * {@link #writeLock()} and {@link #writeUnlock()}. + */ + public void writeLock() { + lock.writeLock(); + } //}}} + + //{{{ writeUnlock() method + /** + * Attempting to obtain read lock will block between calls to + * {@link #writeLock()} and {@link #writeUnlock()}. + */ + public void writeUnlock() { + lock.writeUnlock(); + } //}}} + + //}}} + + //{{{ setURI() + /** + * Sets the URI for the location of this document. + * @param uri the uri specifying the location of this document. Can be null. + * @since jsXe 0.4 pre4 + */ + public void setURI(URI uri) { + m_uri = uri; + }//}}} + + //{{{ getURI() + /** + * Gets the URI for the location of this document. + * @return the uri specifying the location of this document. Can be null. + * @since jsXe 0.4 pre4 + */ + public URI getURI() { + return m_uri; + }//}}} + //{{{ addXMLDocumentListener() /** * Registers a change listener with the XMLDocument @@ -1222,11 +1344,13 @@ //{{{ syncContentWithDOM() /** * Write the DOM to the content manager given the current serialization and - * formatting options. + * formatting options. This method is not thread safe. You should call + * writeLock() before and writeUnlock() after calling this method. */ private void syncContentWithDOM() { if (m_parsedMode) { if (!m_syncedWithContent) { + try { Log.log(Log.MESSAGE, this, "Serializing document"); //since we are in parsed mode let's serialize to the content @@ -1256,6 +1380,9 @@ m_parsedMode = false; try { + + readLock(); + parseDocument(); //Why was this set to false? why would we want to //serialize the document again since nothing's changed? @@ -1267,6 +1394,8 @@ } catch (Exception e) { //If an error occurs then we're in trouble jsXe.exiterror(this, e, 1); + } finally { + readUnlock(); } fireStructureChanged(null); } @@ -1302,7 +1431,8 @@ //{{{ parseDocument() /** * Parses the document with the current options. After this is called - * m_adapterNode and m_parsedMode must be updated. + * m_adapterNode and m_parsedMode must be updated. The document text content + * should be up to date compared to the document structure. * @since jsXe 0.4 pre1 */ public void parseDocument() throws SAXParseException, SAXException, ParserConfigurationException, IOException { @@ -1330,9 +1460,7 @@ builder.setEntityResolver(m_entityResolver); } - //Temporary fix to allow parsing of documnts with multi-byte characters - // Document doc = builder.parse(new ContentManagerInputStream(m_content)); - String text = getText(0, getLength()); + String text = m_content.getText(0,m_content.getLength()); Document doc = builder.parse(new InputSource(new StringReader(text))); doc.getDocumentElement().normalize(); //}}} @@ -1352,7 +1480,8 @@ //{{{ parseWithoutUpdate() /** * Parses the document without updating the DOM. This method does, however, - * update completion info and parse errors. + * update completion info and parse errors. The document text content should + * be up to date compared to the document structure. */ public void parseWithoutUpdate() { Log.log(Log.MESSAGE, this, (m_uri != null ? "Validating Document: "+m_uri.toString() : "Validating Document")); @@ -1387,7 +1516,7 @@ try { //Temporary fix to allow parsing of documnts with multi-byte characters // reader.parse(new InputSource(new ContentManagerInputStream(m_content))); - String text = getText(0, getLength()); + String text = m_content.getText(0,m_content.getLength()); reader.parse(new InputSource(new StringReader(text))); } catch(SAXException se) { //validation errors @@ -2092,6 +2221,12 @@ private boolean m_addedToCompoundEdits = false; private int m_compoundEditCount = 0; + /** + * I/O lock. + */ + private ReadWriteLock lock = new ReadWriteLock(); + private Object propertyLock = new Object(); + // private XMLDocAdapterListener docAdapterListener = new XMLDocAdapterListener(); //}}} Modified: branches/jsxe2/src/net/sourceforge/jsxe/util/ReadWriteLock.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/util/ReadWriteLock.java 2006-09-06 19:34:32 UTC (rev 1241) +++ branches/jsxe2/src/net/sourceforge/jsxe/util/ReadWriteLock.java 2006-09-06 23:22:12 UTC (rev 1242) @@ -56,28 +56,22 @@ * write unlock * write unlock */ -public class ReadWriteLock -{ +public class ReadWriteLock { + //{{{ readLock() method - public synchronized void readLock() - { + public synchronized void readLock() { // this seems to make nested readLock() calls work okay. // but I have no idea if it actually fixes things or not. - if (activeReaders != 0 || allowRead()) - { - ++activeReaders; - //readers.addElement(Thread.currentThread()); - return; + if (activeReaders != 0 || allowRead()) { + // ++activeReaders; + // //readers.addElement(Thread.currentThread()); + // return; } ++waitingReaders; - while (!allowRead()) - { - try - { + while (!allowRead()) { + try { wait(); - } - catch (InterruptedException e) - { + } catch (InterruptedException e) { --waitingReaders; // Roll back state. Log.log(Log.ERROR,this,e); return; @@ -89,10 +83,11 @@ } //}}} //{{{ readUnlock() method - public synchronized void readUnlock() - { - if(activeReaders == 0) + public synchronized void readUnlock() { + + if (activeReaders == 0) { throw new InternalError("Unbalanced readLock()/readUnlock() calls"); + } --activeReaders; //readers.removeElement(Thread.currentThread()); @@ -100,33 +95,27 @@ } //}}} //{{{ writeLock() method - public synchronized void writeLock() - { - if (writerThread != null) - { + public synchronized void writeLock() { + + if (writerThread != null) { // Write in progress. - if (Thread.currentThread() == writerThread) - { - // Same thread. - ++lockCount; - return; - } + // if (Thread.currentThread() == writerThread) + // { + // // Same thread. + // ++lockCount; + // return; + // } } - if (allowWrite()) - { + if (allowWrite()) { claimWriteLock(); return; } ++waitingWriters; - while (!allowWrite()) - { - try - { + while (!allowWrite()) { + try { wait(); - } - catch (InterruptedException e) - { + } catch (InterruptedException e) { --waitingWriters; Log.log(Log.ERROR,this,e); return; @@ -137,16 +126,17 @@ } //}}} //{{{ writeUnlock() method - public synchronized void writeUnlock() - { - if(activeWriters != 1 || lockCount <= 0) + public synchronized void writeUnlock() { + + if (activeWriters != 1 || lockCount <= 0) { throw new InternalError("Unbalanced writeLock()/writeUnlock() calls"); + } - if(Thread.currentThread() != writerThread) + if (Thread.currentThread() != writerThread) { throw new InternalError("writeUnlock() from wrong thread"); + } - if (--lockCount == 0) - { + if (--lockCount == 0) { --activeWriters; writerThread = null; notifyAll(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-06 19:34:36
|
Revision: 1241 http://svn.sourceforge.net/jsxe/?rev=1241&view=rev Author: ian_lewis Date: 2006-09-06 12:34:32 -0700 (Wed, 06 Sep 2006) Log Message: ----------- Removed getDocumentCopy() method Modified Paths: -------------- branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java Modified: branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-09-06 19:29:43 UTC (rev 1240) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-09-06 19:34:32 UTC (rev 1241) @@ -447,6 +447,112 @@ //}}} + //{{{ Text Methods + + //{{{ getText() + /** + * Gets the text at a specified location in the document. This method + * method should be used sparingly as changes to the properties of this + * document or the tree structure could change the location of text + * within the document. + * @param start the starting index of the text to retrieve + * @param length the length of the text needed + * @return the text requested + */ + public String getText(int start, int length) throws IOException { + + if (start < 0 || length < 0 || start + length > m_content.getLength()) { + throw new ArrayIndexOutOfBoundsException(start + ":" + length); + } + + //if the document is well formed we go by the DOM + //if it's not we go by the source text. + syncContentWithDOM(); + return m_content.getText(start,length); + }//}}} + + //{{{ getSegment() + /** + * Gets the text at a specified location in the document. This method + * method should be used sparingly as changes to the properties of this + * document or the tree structure could change the location of text + * within the document. + * @param start the starting index of the text to retrieve + * @param length the length of the text needed + * @return the segment representing the text requested + */ + public Segment getSegment(int start, int length) throws IOException { + + if (start < 0 || length < 0 || start + length > m_content.getLength()) { + throw new ArrayIndexOutOfBoundsException(start + ":" + length); + } + + //if the document is well formed we go by the DOM + //if it's not we go by the source text. + if (m_parsedMode) { + syncContentWithDOM(); + } + Segment seg = new Segment(); + m_content.getText(start, length, seg); + return seg; + }//}}} + + //{{{ getLength() + /** + * Gets the total number of characters in the document. + * @return the length of the document + */ + public int getLength() { + + syncContentWithDOM(); + + return m_content.getLength(); + }//}}} + + //{{{ insertText() + /** + * Inserts text into the document at the specified location + * @param offset the character offset where the text should be inserted + * @param text the text to insert + * @throws IOException if the text could not be inserted + */ + public void insertText(int offset, String text) throws IOException { + if (text.length() > 0) { + Log.log(Log.DEBUG, this, "insertText: "+offset+": "+text); + syncContentWithDOM(); + m_content.insert(offset, text); + m_parsedMode = false; + m_adapterNode = null; + if (!getFlag(UNDO_IN_PROGRESS)) { + addUndoableEdit(new InsertEdit(this, offset, text)); + } + fireStructureChanged(null); + } + }//}}} + + //{{{ removeText() + /** + * Removes text at the specifed character offset. + * @param offset the character offset where the text is removed form + * @param length the length of the text segment to remove + * @throws IOException if the text could not be removed + */ + public void removeText(int offset, int length) throws IOException { + if (length > 0) { + String text = getText(offset,length); + Log.log(Log.DEBUG, this, "removeText: "+offset+": "+text); + m_content.remove(offset, length); + m_parsedMode = false; + m_adapterNode = null; + if (!getFlag(UNDO_IN_PROGRESS)) { + addUndoableEdit(new RemoveEdit(this, offset, text)); + } + fireStructureChanged(null); + } + }//}}} + + //}}} + //{{{ checkWellFormedness() /** * Checks the wellformedness of the document and throws appropriate @@ -468,29 +574,6 @@ return m_parsedMode; }//}}} - //{{{ getDocumentCopy() - /** - * Gets a copy of the underlying Document object. - * @return a deep copy of the underlying document object - */ - public Document getDocumentCopy() { - //makes a deep copy of the document node - try { - checkWellFormedness(); - } catch (SAXParseException e) { - } catch (SAXException e) { - } catch (ParserConfigurationException e) { - } catch (IOException e) { - //If an error occurs then we're in trouble - jsXe.exiterror(this, e, 1); - } - if (m_document != null) { - return (Document)m_document.cloneNode(true); - } else { - return null; - } - }//}}} - //{{{ getDocType() /** * Returns the document type node for this XMLDocument or null if there is @@ -608,66 +691,6 @@ return newAdapterNode(parent, newNode); }//}}} - //{{{ getText() - /** - * Gets the text at a specified location in the document. This method - * method should be used sparingly as changes to the properties of this - * document or the tree structure could change the location of text - * within the document. - * @param start the starting index of the text to retrieve - * @param length the length of the text needed - * @return the text requested - */ - public String getText(int start, int length) throws IOException { - - if (start < 0 || length < 0 || start + length > m_content.getLength()) { - throw new ArrayIndexOutOfBoundsException(start + ":" + length); - } - - //if the document is well formed we go by the DOM - //if it's not we go by the source text. - syncContentWithDOM(); - return m_content.getText(start,length); - }//}}} - - //{{{ getSegment() - /** - * Gets the text at a specified location in the document. This method - * method should be used sparingly as changes to the properties of this - * document or the tree structure could change the location of text - * within the document. - * @param start the starting index of the text to retrieve - * @param length the length of the text needed - * @return the segment representing the text requested - */ - public Segment getSegment(int start, int length) throws IOException { - - if (start < 0 || length < 0 || start + length > m_content.getLength()) { - throw new ArrayIndexOutOfBoundsException(start + ":" + length); - } - - //if the document is well formed we go by the DOM - //if it's not we go by the source text. - if (m_parsedMode) { - syncContentWithDOM(); - } - Segment seg = new Segment(); - m_content.getText(start, length, seg); - return seg; - }//}}} - - //{{{ getLength() - /** - * Gets the total number of characters in the document. - * @return the length of the document - */ - public int getLength() { - - syncContentWithDOM(); - - return m_content.getLength(); - }//}}} - //{{{ getErrors() /** * Gets a list of non-fatal errors that were encountered @@ -923,48 +946,6 @@ return m_uri; }//}}} - //{{{ insertText() - /** - * Inserts text into the document at the specified location - * @param offset the character offset where the text should be inserted - * @param text the text to insert - * @throws IOException if the text could not be inserted - */ - public void insertText(int offset, String text) throws IOException { - if (text.length() > 0) { - Log.log(Log.DEBUG, this, "insertText: "+offset+": "+text); - syncContentWithDOM(); - m_content.insert(offset, text); - m_parsedMode = false; - m_adapterNode = null; - if (!getFlag(UNDO_IN_PROGRESS)) { - addUndoableEdit(new InsertEdit(this, offset, text)); - } - fireStructureChanged(null); - } - }//}}} - - //{{{ removeText() - /** - * Removes text at the specifed character offset. - * @param offset the character offset where the text is removed form - * @param length the length of the text segment to remove - * @throws IOException if the text could not be removed - */ - public void removeText(int offset, int length) throws IOException { - if (length > 0) { - String text = getText(offset,length); - Log.log(Log.DEBUG, this, "removeText: "+offset+": "+text); - m_content.remove(offset, length); - m_parsedMode = false; - m_adapterNode = null; - if (!getFlag(UNDO_IN_PROGRESS)) { - addUndoableEdit(new RemoveEdit(this, offset, text)); - } - fireStructureChanged(null); - } - }//}}} - //{{{ setModel() /** * Sets up the XMLDocument given a Reader. The existing content is This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-06 19:29:47
|
Revision: 1240 http://svn.sourceforge.net/jsxe/?rev=1240&view=rev Author: ian_lewis Date: 2006-09-06 12:29:43 -0700 (Wed, 06 Sep 2006) Log Message: ----------- Removed commented out code Modified Paths: -------------- branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java Modified: branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-09-06 19:26:53 UTC (rev 1239) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-09-06 19:29:43 UTC (rev 1240) @@ -1775,41 +1775,6 @@ //}}} }//}}} - //{{{ ContentManagerOutputStream class - /** - * output stream to write to the content manager when the serialized. Used - * when syncing the source with the current Document. - * Currently not used. - */ - /* - private static class ContentManagerOutputStream extends OutputStream { - - //{{{ ContentManagerOutputStream constructor - public ContentManagerOutputStream(ContentManager content) { - m_m_content = content; - }//}}} - - //{{{ write() - public void write(int b) throws IOException { - byte []barray = { (byte)b }; - m_m_content.insert(m_m_content.getLength(), new String(barray)); - }//}}} - - //{{{ write() - public void write(byte[] b) throws IOException { - m_m_content.insert(m_m_content.getLength(), new String(b)); - }//}}} - - //{{{ write() - public void write(byte[] b, int off, int len) { - m_m_content.insert(m_m_content.getLength(), new String(b, off, len)); - }//}}} - - //{{{ Private members - private ContentManager m_m_content; - //}}} - }*///}}} - //{{{ ContentManagerWriter class /** * Character Stream used to write to the content manager when @@ -1875,134 +1840,6 @@ //}}} }//}}} - //{{{ ContentManagerInputStream class - /** - * Input stream for parsing/reading current text content. Currently not - * used. - */ - /* - private static class ContentManagerInputStream extends InputStream { - - //{{{ ContentManagerInputStream constructor - public ContentManagerInputStream(ContentManager content) { - m_m_content = content; - }//}}} - - //{{{ available() - public int available() { - return m_m_content.getLength() - m_m_index; - }//}}} - - //{{{ read() - public int read() { - if (m_m_index < m_m_content.getLength()) { - char[] text = m_m_content.getText(m_m_index++, 1).toCharArray(); - return (int)text[0]; - } else { - return -1; - } - }//}}} - - //{{{ read() - public int read(byte[] b) throws IOException { - return read(b, 0, b.length); - }//}}} - - //{{{ read() - public int read(byte[]b, int off, int len) { - if (len == 0) { - return 0; - } - - int length = len; - int contentLength = m_m_content.getLength(); - - //TODO this code doesn't support multi-byte characters - //contentLength below is the current number of characters - //what should be used is the total number of bytes in the document - //furthermore m_m_index is an character index into the - //document where it needs to be a byte index - if (m_m_index < contentLength) { - if (m_m_index + length >= contentLength) { - length = contentLength - m_m_index; - } - } else { - length = -1; - } - - //use UTF-8, want to esure it's UTF-8 instead of whatever - //the system default is. We'll only use the specified encoding - //when we write to disk. - if (length != -1) { - try { - - byte[] text = m_m_content.getText(m_m_index, length).getBytes("UTF-8"); - System.arraycopy(text, 0, b, off, length); - m_m_index += length; - - } catch (UnsupportedEncodingException uee) { - //UTF-8 is guaranteed to be supported. - Log.log(Log.ERROR, this, uee); - } - } - - return length; - - }//}}} - - //{{{ skip() - public long skip(long n) { - m_m_index += (int)n; - return n; - }//}}} - - //{{{ Private members - private int m_m_index = 0; - private ContentManager m_m_content; - //}}} - - }*///}}} - - //{{{ XMLDocAdapterListener class - /** - * An AdapterNodeListener is added to each AdapterNode in the tree so that - * the XMLDocument is notified when the structure changes. - */ - /* - private class XMLDocAdapterListener implements AdapterNodeListener { - - // {{{ nodeAdded() - public void nodeAdded(AdapterNode source, AdapterNode added) { - fireStructureChanged(source); - }//}}} - - //{{{ nodeRemoved() - public void nodeRemoved(AdapterNode source, AdapterNode removed) { - fireStructureChanged(source); - }//}}} - - //{{{ localNameChanged() - public void localNameChanged(AdapterNode source) { - fireStructureChanged(source); - }//}}} - - //{{{ namespaceChanged() - public void namespaceChanged(AdapterNode source) { - fireStructureChanged(source); - }//}}} - - //{{{ nodeValueChanged() - public void nodeValueChanged(AdapterNode source) { - fireStructureChanged(source); - }//}}} - - //{{{ attributeChanged() - public void attributeChanged(AdapterNode source, String attr) { - fireStructureChanged(source); - }//}}} - - }//}}}*/ - //{{{ SerializeErrorHandler class /** * Handles when parsing causes changes to the structure of the document. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-06 19:27:02
|
Revision: 1239 http://svn.sourceforge.net/jsxe/?rev=1239&view=rev Author: ian_lewis Date: 2006-09-06 12:26:53 -0700 (Wed, 06 Sep 2006) Log Message: ----------- Moved serialization classes to net.sourceforge.jsxe.dom.ls Added Paths: ----------- branches/jsxe2/src/net/sourceforge/jsxe/dom/ls/DOMSerializer.java branches/jsxe2/src/net/sourceforge/jsxe/dom/ls/DOMSerializerConfiguration.java branches/jsxe2/src/net/sourceforge/jsxe/dom/ls/DOMSerializerException.java Removed Paths: ------------- branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMSerializer.java branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMSerializerConfiguration.java branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMSerializerException.java Deleted: branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMSerializer.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMSerializer.java 2006-09-06 19:20:54 UTC (rev 1238) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMSerializer.java 2006-09-06 19:26:53 UTC (rev 1239) @@ -1,825 +0,0 @@ -/* -DOMSerializer.java -:tabSize=4:indentSize=4:noTabs=true: -:folding=explicit:collapseFolds=1: - -This attempts to conform to the DOM3 implementation in Xerces. It tries to -conform to DOM3 as of Xerces 2.6.0. I'm not one to stay on the bleeding edge -but it is as close to a standard interface for load & save as you can get -and I didn't want to work around the fact that current serializers aren't -very good. - -Copyright (C) 2002 Ian Lewis (Ian...@me...) - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -Optionally, you may find a copy of the GNU General Public License -from http://www.fsf.org/copyleft/gpl.txt -*/ - -package net.sourceforge.jsxe.dom; - -//{{{ imports -/* -All classes are listed explicitly so -it is easy to see which package it -belongs to. -*/ - -//{{{ DOM classes -import org.w3c.dom.Attr; -import org.w3c.dom.Document; -import org.w3c.dom.DocumentType; -import org.w3c.dom.DOMException; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.w3c.dom.Notation; -import org.w3c.dom.ls.LSSerializer; -import org.w3c.dom.ls.LSSerializerFilter; -import org.w3c.dom.ls.LSOutput; -import org.w3c.dom.DOMConfiguration; -import org.w3c.dom.DOMLocator; -import org.w3c.dom.DOMError; -import org.w3c.dom.DOMErrorHandler; -//}}} - -//{{{ Java base classes -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.StringWriter; -import java.io.UnsupportedEncodingException; -import java.io.Writer; -import java.net.URL; -import java.net.URLConnection; -import java.net.MalformedURLException; -import java.util.ArrayList; -import java.util.Hashtable; -import java.util.Vector; -//}}} - -//}}} - -/** - * An implementation of the DOM3 LSSerializer interface. This class supports - * everything that is supported by the DOMSerializerConfiguration class. Clients - * can check if a feature is supported by calling canSetParameter() on the - * appropriate DOMSerializerConfiguration object. - * - * @author <a href="mailto:IanLewis at member dot fsf dot org">Ian Lewis</a> - * @version $Id$ - */ -public class DOMSerializer implements LSSerializer { - - //{{{ DOMSerializer constructor - /** - * Creates a default DOMSerializer using the default options. - */ - public DOMSerializer() { - config = new DOMSerializerConfiguration(); - m_newLine = System.getProperty("line.separator"); - }//}}} - - //{{{ DOMSerializer constructor - /** - * Creates a DOMSerializer that uses the configuration specified. - * @param config The configuration to be used by this DOMSerializer object - */ - public DOMSerializer(DOMSerializerConfiguration config) { - this.config = config; - m_newLine = System.getProperty("line.separator"); - }//}}} - - //{{{ Implemented LSSerializer methods - - //{{{ getConfig() - - public DOMConfiguration getDomConfig() { - return config; - }//}}} - - //{{{ getFilter() - - public LSSerializerFilter getFilter() { - return m_filter; - }//}}} - - //{{{ getNewLine() - - public String getNewLine() { - return m_newLine; - }//}}} - - //{{{ setFilter() - - public void setFilter(LSSerializerFilter filter) { - m_filter=filter; - }//}}} - - //{{{ setNewLine() - - public void setNewLine(String newLine) { - m_newLine=newLine; - }//}}} - - //{{{ write() - - public boolean write(Node nodeArg, LSOutput destination) { - if (m_filter == null || m_filter.acceptNode(nodeArg) == 1) { - - //{{{ try to get the Writer object for our destination - Writer writer = destination.getCharacterStream(); - String encoding = null; - - if (writer == null) { - //no character stream specified, try the byte stream. - OutputStream out = destination.getByteStream(); - if (out != null) { - - try { - writer = new OutputStreamWriter(out, destination.getEncoding()); - encoding = destination.getEncoding(); - } catch (UnsupportedEncodingException uee) { - DefaultDOMLocator loc = new DefaultDOMLocator(nodeArg, 1, 1, 0, null); - try { - throwError(loc, "unsupported-encoding", DOMError.SEVERITY_FATAL_ERROR, uee); - } catch (DOMSerializerException e) {/*we know this will happen*/} - //This is a fatal error, quit. - return false; - } - } else { - //no char stream or byte stream, try the uri - String id = destination.getSystemId(); - if (id != null) { - - try { - //We use URL since outputing to any other type of URI - //is not possible. - URL uri = new URL(id); - URLConnection con = uri.openConnection(); - - try { - //We want to try to output to the URI - con.setDoOutput(true); - //I don't see a problem with using caches - //do you? - con.setUseCaches(true); - } catch (IllegalStateException ise) { - //we are guaranteed to not be connected - } - - con.connect(); - - writer = new OutputStreamWriter(con.getOutputStream(), destination.getEncoding()); - - } catch (MalformedURLException mue) { - DefaultDOMLocator loc = new DefaultDOMLocator(nodeArg, 1, 1, 0, null); - try { - throwError(loc, "bad-uri", DOMError.SEVERITY_FATAL_ERROR, mue); - } catch (DOMSerializerException e) {/*we know this will happen*/} - //this is a fatal error - return false; - } catch (IOException ioe) { - DefaultDOMLocator loc = new DefaultDOMLocator(nodeArg, 1, 1, 0, null); - try { - throwError(loc, "io-error", DOMError.SEVERITY_FATAL_ERROR, ioe); - } catch (DOMSerializerException e) {/*we know this will happen*/} - //this is a fatal error - return false; - } - - } else { - DefaultDOMLocator loc = new DefaultDOMLocator(nodeArg, 1, 1, 0, null); - try { - throwError(loc, "no-output-specified", DOMError.SEVERITY_FATAL_ERROR, null); - } catch (DOMSerializerException e) {/*we know this will happen*/} - //this is a fatal error - return false; - } - } - }//}}} - - BufferedWriter bufWriter = new BufferedWriter(writer, IO_BUFFER_SIZE); - - try { - serializeNode(bufWriter, nodeArg, encoding); - bufWriter.close(); - return true; - } catch (IOException ioe) { - Object rawHandler = config.getParameter(DOMSerializerConfiguration.ERROR_HANDLER); - if (rawHandler != null) { - DOMErrorHandler handler = (DOMErrorHandler)rawHandler; - DefaultDOMLocator loc = new DefaultDOMLocator(nodeArg, 1, 1, 0, null); - DOMSerializerError error = new DOMSerializerError(loc, ioe, DOMError.SEVERITY_FATAL_ERROR, "io-error"); - handler.handleError(error); - } - } catch (DOMSerializerException dse) { - Object rawHandler = config.getParameter(DOMSerializerConfiguration.ERROR_HANDLER); - if (rawHandler != null) { - DOMErrorHandler handler = (DOMErrorHandler)rawHandler; - DOMError error = dse.getError(); - handler.handleError(error); - } - //This is a fatal error, quit. - } - } - return false; - }//}}} - - //{{{ writeToString() - - public String writeToString(Node nodeArg) throws DOMException { - StringWriter writer = new StringWriter(); - try { - serializeNode(writer, nodeArg); - //flush the output-stream. Without this - //files are sometimes not written at all. - writer.flush(); - } catch (DOMSerializerException dse) { - throw new DOMException(DOMException.INVALID_STATE_ERR, dse.getMessage()); - } - return writer.toString(); - }//}}} - - //{{{ writeToURI() - - public boolean writeToURI(Node nodeArg, java.lang.String uri) { - return write(nodeArg, new DOMOutput(uri, "UTF-8")); - }//}}} - - //}}} - - //{{{ Private static members - private static final int IO_BUFFER_SIZE = 32768; - //}}} - - //{{{ Private members - - //{{{ DOMSerializerError class - - private static class DOMSerializerError implements DOMError { - - //{{{ DOMSerializerError constructor - - public DOMSerializerError(DOMLocator locator, Exception e, short s, String type) { - m_exception = e; - m_location = locator; - m_severity = s; - m_type = type; - }//}}} - - //{{{ getLocation() - - public DOMLocator getLocation() { - return m_location; - }//}}} - - //{{{ getMessage() - - public String getMessage() { - return m_exception.getMessage(); - }//}}} - - //{{{ getRelatedData() - - public Object getRelatedData() { - return m_location.getRelatedNode(); - }//}}} - - //{{{ getRelatedException() - - public Object getRelatedException() { - return m_exception; - }//}}} - - //{{{ getSeverity() - - public short getSeverity() { - return m_severity; - }//}}} - - //{{{ getType() - - public String getType() { - return m_type; - }//}}} - - //{{{ Private members - - private Exception m_exception; - private DOMLocator m_location; - private short m_severity; - private String m_type; - //}}} - - }//}}} - - //{{{ serializeNode() - - private void serializeNode(Writer writer, Node node) throws DOMSerializerException { - serializeNode(writer, node, null); - }//}}} - - //{{{ serializeNode() - /** - * Serializes the node to the writer specified - */ - private void serializeNode(Writer writer, Node node, String encoding) throws DOMSerializerException { - rSerializeNode(writer, node, encoding, "", 1, 1, 0); - }//}}} - - //{{{ rSerializeNode() - /** - * Designed to be called recursively and maintain the state of the - * serialization. - */ - private void rSerializeNode(Writer writer, Node node, String encoding, String currentIndent, int line, int column, int offset) throws DOMSerializerException { - - boolean formatting = config.getFeature(DOMSerializerConfiguration.FORMAT_XML); - // boolean whitespace = config.getFeature(DOMSerializerConfiguration.WS_IN_ELEMENT_CONTENT); - - //This is used many times below as a temporary variable. - String str = ""; - - if (m_filter == null || m_filter.acceptNode(node) == 1) { - switch (node.getNodeType()) { - case Node.DOCUMENT_NODE://{{{ - if (config.getFeature(DOMSerializerConfiguration.XML_DECLARATION)) { - String header = "<?xml version=\"1.0\""; - String realEncoding = (String)config.getParameter(DOMSerializerConfiguration.XML_ENCODING); - if (realEncoding == null) { - realEncoding = encoding; - } - if (realEncoding != null) - header += " encoding=\""+realEncoding+"\""; - header +="?>"; - doWrite(writer, header, node, line, column, offset); - offset += header.length(); - column += header.length(); - - - //if not formatting write newLine here. - if (!formatting) { - column = 0; - line += 1; - doWrite(writer, m_newLine, node, line, column, offset); - offset += m_newLine.length(); - } - } - - NodeList nodes = node.getChildNodes(); - if (nodes != null) { - for (int i=0; i<nodes.getLength(); i++) { - rSerializeNode(writer, nodes.item(i), encoding, currentIndent, line, column, offset); - } - } - - break;//}}} - case Node.ELEMENT_NODE://{{{ - String nodeName = node.getLocalName(); - String nodePrefix = node.getPrefix(); - if (nodeName == null) { - nodeName = node.getNodeName(); - } - - if (formatting) { - //set to zero here for error handling (if doWrite throws exception). - column = 0; - str = m_newLine + currentIndent; - doWrite(writer, str, node, line, column, offset); - column += currentIndent.length(); - offset += str.length(); - } - - if (config.getFeature(DOMSerializerConfiguration.NAMESPACES) && nodePrefix != null) { - str = "<" + nodePrefix + ":" + nodeName; - } else { - str = "<" + nodeName; - } - - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - - NamedNodeMap attr = node.getAttributes(); - for (int i=0; i<attr.getLength(); i++) { - Attr currentAttr = (Attr)attr.item(i); - boolean writeAttr = false; - - /* - if we discard default content check if the attribute - was specified in the original document. - */ - if (config.getFeature(DOMSerializerConfiguration.DISCARD_DEFAULT_CONTENT)) { - if (currentAttr.getSpecified()) { - writeAttr = true; - } - } else { - writeAttr = true; - } - - if (writeAttr) { - str = " " + currentAttr.getNodeName() + "=\"" + normalizeCharacters(currentAttr.getNodeValue()) + "\""; - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - } - } - - NodeList children = node.getChildNodes(); - if (children != null) { - - //check if element is empty or has - //only whitespace-only nodes - boolean elementEmpty = false; - if (children.getLength() <= 0) { - elementEmpty = true; - } else { - if (!config.getFeature(DOMSerializerConfiguration.WS_IN_ELEMENT_CONTENT)) { - boolean hasWSOnlyElements = true; - for(int i=0; i<children.getLength();i++) { - hasWSOnlyElements = hasWSOnlyElements && - children.item(i).getNodeType()==Node.TEXT_NODE && - children.item(i).getNodeValue().trim().equals(""); - } - elementEmpty = formatting && hasWSOnlyElements; - } - } - if (!elementEmpty) { - - str = ">"; - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - - String indentUnit = ""; - - if (formatting) { - if (config.getFeature(DOMSerializerConfiguration.SOFT_TABS)) { - //get the indent size and use it when serializing the children nodes. - Integer indentSize = (Integer)config.getParameter("indent"); - if (indentSize != null) { - int size = indentSize.intValue(); - StringBuffer buf = new StringBuffer(); - for (int i=0; i < size; i++) { - buf.append(" "); - } - indentUnit = buf.toString(); - } - } else { - indentUnit = "\t"; - } - } - - - for(int i=0; i<children.getLength();i++) { - rSerializeNode(writer, children.item(i), encoding, currentIndent + indentUnit, line, column, offset); - } - - //don't add a new line if there is only text node children - if (formatting) { - - boolean allText = true; - for(int i=0; i<children.getLength();i++) { - if (!(children.item(i).getNodeType()==Node.TEXT_NODE) && - !(children.item(i).getNodeType()==Node.CDATA_SECTION_NODE)) - { - allText = false; - break; - } - } - - if (!allText) { - //set to zero here for error handling (if doWrite throws exception). - column = 0; - str = m_newLine + currentIndent; - doWrite(writer, str, node, line, column, offset); - column += currentIndent.length(); - offset += str.length(); - } - } - if (config.getFeature(DOMSerializerConfiguration.NAMESPACES) && nodePrefix != null) { - str = "</" + nodePrefix + ":" +nodeName + ">"; - } else { - str = "</" + nodeName + ">"; - } - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - - } else { - str = "/>"; - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - } - } - break;//}}} - case Node.TEXT_NODE://{{{ - String text = node.getNodeValue(); - //formatting implies no whitespace - //but to be explicit... - // if (!whitespace || formatting) { - // text = text.trim(); - // } - if (!text.equals("")) { - if (formatting) { - if (text.trim().equals("")) { - //ignore this whitespace only text if formatting - return; - } - - /* - don't format text nodes - if (node.getNextSibling() != null || node.getPreviousSibling() != null) { - line++; - column=0; - doWrite(writer, m_newLine, node, line, column, offset); - offset += m_newLine.length(); - } - */ - } - - //TODO: This is a dumb quick fix and should probably be changed. - for (int i=0; i<text.length();i++) { - //this must be first or it picks up the other - //entities. - str = text.substring(i, i+1); - if (str.equals("&")) { - str = "&"; - } - if (str.equals(">")) { - str = ">"; - } - if (str.equals("<")) { - str = "<"; - } - if (str.equals("\'")) { - str = "'"; - } - if (str.equals("\"")) { - str = """; - } - if (str.equals(m_newLine)) { - line++; - column=0; - doWrite(writer, m_newLine, node, line, column, offset); - offset += m_newLine.length(); - } else { - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - } - } - } - break;//}}} - case Node.CDATA_SECTION_NODE://{{{ - if (config.getFeature(DOMSerializerConfiguration.CDATA_SECTIONS)) { - //shouldn't add newlines for - // if (formatting) { - // //set to zero here for error handling (if doWrite throws exception) - // column = 0; - // str = m_newLine + currentIndent; - // doWrite(writer, str, node, line, column, offset); - // column += currentIndent.length(); - // offset += str.length(); - // } - str = "<![CDATA["; - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - - String cdata = node.getNodeValue(); - for (int i=0; i<cdata.length(); i++) { - - str = cdata.substring(i, i+1); - if (str.equals("]") && i+3 < cdata.length() && cdata.substring(i, i+3).equals("]]>")) { - //split the cdata - DefaultDOMLocator loc = new DefaultDOMLocator(node, line, column, offset, null); - if (config.getFeature(DOMSerializerConfiguration.SPLIT_CDATA)) { - i+=2; - str = "]]]]>"; - /* - if (formatting) { - str += (m_newLine + currentIndent); - column = currentIndent.length(); - offset += (m_newLine.length() + currentIndent.length()); - } - */ - str += "<![CDATA[>"; - throwError(loc, "cdata-sections-splitted", DOMError.SEVERITY_WARNING, null); - } else { - throwError(loc, "invalid-data-in-cdata-section", DOMError.SEVERITY_FATAL_ERROR, null); - } - } - if (str.equals(m_newLine)) { - line++; - column=0; - doWrite(writer, m_newLine, node, line, column, offset); - offset += m_newLine.length(); - } else { - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - } - - } - - str = "]]>"; - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - } else { - //transform to text node. - Node textNode = node.getOwnerDocument().createTextNode(node.getNodeValue()); - rSerializeNode(writer, textNode, encoding, currentIndent, line, column, offset); - } - break;//}}} - case Node.COMMENT_NODE://{{{ - if (config.getFeature("comments")) { - if (formatting) { - //set to zero here for error handling (if doWrite throws exception) - column = 0; - str = m_newLine + currentIndent; - doWrite(writer, str, node, line, column, offset); - column += currentIndent.length(); - offset += str.length(); - } - str = "<!--"+node.getNodeValue()+"-->"; - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - } - break;//}}} - case Node.PROCESSING_INSTRUCTION_NODE://{{{ - - if (formatting) { - //set to zero here for error handling (if doWrite throws exception) - column = 0; - str = m_newLine + currentIndent; - doWrite(writer, str, node, line, column, offset); - column += currentIndent.length(); - offset += str.length(); - } - - str = "<?" + node.getNodeName() + " " + node.getNodeValue() + "?>"; - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - - break;//}}} - case Node.ENTITY_REFERENCE_NODE://{{{ - str = "&" + node.getNodeName() + ";"; - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - break;//}}} - case Node.DOCUMENT_TYPE_NODE://{{{ - DocumentType docType = (DocumentType)node; - - if (formatting) { - //set to zero here for error handling (if doWrite throws exception). - column = 0; - str = m_newLine + currentIndent; - doWrite(writer, str, node, line, column, offset); - column += currentIndent.length(); - offset += str.length(); - } - - str = "<!DOCTYPE " + docType.getName(); - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - if (docType.getPublicId() != null) { - str = " PUBLIC \"" + docType.getPublicId() + "\" "; - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - } - if (docType.getSystemId() != null) { - if (docType.getPublicId() == null) { - str = " SYSTEM "; - } else { - str = ""; - } - str += "\"" + docType.getSystemId() + "\""; - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - } - - String internalSubset = docType.getInternalSubset(); - if (internalSubset != null && !internalSubset.equals("")) { - str = " [ "+internalSubset+" ]"; - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - } - - str = ">"; - doWrite(writer, str, node, line, column, offset); - column += str.length(); - offset += str.length(); - - //need to add a newline so that the next item is on a new line - //since text nodes are not included outside of the root element - if (!formatting) { - column = 0; - str = m_newLine + currentIndent; - doWrite(writer, str, node, line, column, offset); - column += currentIndent.length(); - offset += str.length(); - } - - break;//}}} - } - } - }//}}} - - //{{{ doWrite() - /** - * Performs an actual write and implements error handling. - */ - private void doWrite(Writer writer, String str, Node wnode, int line, int column, int offset) throws DOMSerializerException { - try { - writer.write(str, 0, str.length()); - } catch (IOException ioe) { - - DefaultDOMLocator loc = new DefaultDOMLocator(wnode, line, column, offset, null); - - throwError(loc, "io-error", DOMError.SEVERITY_FATAL_ERROR, ioe); - } - }//}}} - - //{{{ throwError() - /** - * Throws an error, notifying the ErrorHandler object if necessary. - * @return the value returned by the error handler or false if the severity was SEVERITY_FATAL_ERROR - */ - private void throwError(DOMLocator loc, String type, short severity, Exception e) throws DOMSerializerException { - Object rawHandler = config.getParameter(DOMSerializerConfiguration.ERROR_HANDLER); - boolean handled = false; - if (severity == DOMError.SEVERITY_WARNING) { - handled = true; - } - DOMSerializerError error = new DOMSerializerError(loc, e, severity, type); - if (rawHandler != null) { - DOMErrorHandler handler = (DOMErrorHandler)rawHandler; - handled = handler.handleError(error); - } - - if ((severity == DOMError.SEVERITY_ERROR && !handled) || severity == DOMError.SEVERITY_FATAL_ERROR) { - throw new DOMSerializerException(error); - } - }//}}} - - //{{{ normalizeCharacters() - - private String normalizeCharacters(String text) { - StringBuffer newText = new StringBuffer(); - //This is a dumb quick fix and should be changed. - for (int i=0; i<text.length();i++) { - //this must be first or it picks up the other - //entities. - String str = text.substring(i, i+1); - if (str.equals("&")) { - str = "&"; - } - if (str.equals(">")) { - str = ">"; - } - if (str.equals("<")) { - str = "<"; - } - if (str.equals("\'")) { - str = "'"; - } - if (str.equals("\"")) { - str = """; - } - newText.append(str); - } - return newText.toString(); - }//}}} - - private DOMSerializerConfiguration config; - private LSSerializerFilter m_filter; - private String m_newLine; - - //}}} -} Deleted: branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMSerializerConfiguration.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMSerializerConfiguration.java 2006-09-06 19:20:54 UTC (rev 1238) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMSerializerConfiguration.java 2006-09-06 19:26:53 UTC (rev 1239) @@ -1,478 +0,0 @@ -/* -DOMSerializerConfiguration.java -:tabSize=4:indentSize=4:noTabs=true: -:folding=explicit:collapseFolds=1: - -This attempts to conform to the DOM3 implementation in Xerces. It conforms -to DOM3 as of Xerces 2.3.0. I'm not one to stay on the bleeding edge but -there is as close to a standard interface for load & save as you can get and I -didn't want to work around the fact that current serializers aren't very good. - -Copyright (C) 2002 Ian Lewis (Ian...@me...) - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -Optionally, you may find a copy of the GNU General Public License -from http://www.fsf.org/copyleft/gpl.txt -*/ - -package net.sourceforge.jsxe.dom; - -//{{{ imports - -//{{{ DOM classes -import org.w3c.dom.DOMException; -import org.w3c.dom.DOMConfiguration; -import org.w3c.dom.DOMError; -import org.w3c.dom.DOMErrorHandler; -import org.w3c.dom.DOMLocator; -import org.w3c.dom.DOMStringList; -//}}} - -//{{{ Java classes -import java.util.ArrayList; -import java.util.Hashtable; -import java.util.Iterator; -//}}} - -import net.sourceforge.jsxe.util.Log; - -//}}} - -/** - * <p>DOMSerializerConfiguration is the default implementation of the DOMConfiguration - * interface to be used with the DOMSerializer class.</p> - * - * <p>Currently, this class only supports the required options with few exceptions. - * The <code>"format-pretty-print"</code> option is supported. - * A <code>"soft-tabs"</code> option is supported which specifies whether - * to emulate tabs with spaces. - * An <code>"indent"</code> option is supported to specify the indent/tab - * size when the <code>"soft-tabs"</code> feature is true. This has no effect - * if <code>"soft-tabs"</code> is false.</p> - * - * @author <a href="mailto:IanLewis at member dot fsf dot org">Ian Lewis</a> - * @version $Id$ - * @see DOMSerializer - */ -public class DOMSerializerConfiguration implements DOMConfiguration { - - //{{{ DOMConfiguration defined parameters - public static final String CANONICAL_FORM = "canonical-form"; - public static final String CDATA_SECTIONS = "cdata-sections"; - public static final String CHAR_NORMALIZATION = "check-character-normalization"; - public static final String COMMENTS = "comments"; - public static final String DATATYPE_NORMALIZATION = "datatype-normalization"; - public static final String ENTITIES = "entities"; - public static final String ERROR_HANDLER = "error-handler"; - public static final String INFOSET = "infoset"; - public static final String NAMESPACES = "namespaces"; - public static final String NAMESPACE_DECLARATIONS = "namespace-declarations"; - public static final String NORMALIZE_CHARS = "normalize-characters"; - public static final String SPLIT_CDATA = "split-cdata-sections"; - public static final String VALIDATE_XML = "validate"; - public static final String VALIDATE_IF_SCHEMA = "validate-if-schema"; - public static final String WELL_FORMED = "well-formed"; - public static final String WS_IN_ELEMENT_CONTENT = "element-content-whitespace"; - //}}} - - //{{{ LSSerializer defined parameters - public static final String DISCARD_DEFAULT_CONTENT = "discard-default-content"; - public static final String FORMAT_XML = "format-pretty-print"; - public static final String IGNORE_UNKNOWN_CHAR_DENORM = "ignore-unknown-character-denormalizations"; - public static final String XML_DECLARATION = "xml-declaration"; - //}}} - - //{{{ Additional parameters supported by DOMSerializerConfiguration - /** - * Use spaces instead of tabs if this is true. - */ - public static final String SOFT_TABS = "soft-tabs"; - /** - * The number of spaces to use as an tab when SOFT_TABS is true. - */ - public static final String INDENT = "indent"; - /** - * The encoding to use in the XML declaration. - */ - public static final String XML_ENCODING = "encoding"; - //}}} - - //{{{ DOMSerializerConfiguration constructor - - public DOMSerializerConfiguration() { - - //set the default boolean parameters for a DOMConfiguration - setFeature(CANONICAL_FORM, false); - setFeature(CDATA_SECTIONS, true); - setFeature(CHAR_NORMALIZATION, false); - setFeature(COMMENTS, true); - setFeature(DATATYPE_NORMALIZATION, false); - setFeature(ENTITIES, true); - //infoset is not present because it is determined - //by checking the values of other features. - setFeature(NAMESPACES, true); - setFeature(NAMESPACE_DECLARATIONS, true); - setFeature(NORMALIZE_CHARS, true); - setFeature(SPLIT_CDATA, true); - setFeature(VALIDATE_XML, false); - setFeature(VALIDATE_IF_SCHEMA, false); - setFeature(WELL_FORMED, true); - setFeature(WS_IN_ELEMENT_CONTENT, true); - - //LSSeraializer features - setFeature(DISCARD_DEFAULT_CONTENT, true); - setFeature(FORMAT_XML, false); - setFeature(IGNORE_UNKNOWN_CHAR_DENORM, true); - setFeature(XML_DECLARATION, true); - - //DOMSerializer parameters - setFeature(SOFT_TABS, false); - setParameter(INDENT, new Integer(4)); - setParameter(XML_ENCODING, null); - }//}}} - - //{{{ DOMSerializerConfiguration constructor - - public DOMSerializerConfiguration(DOMConfiguration config) throws DOMException { - this(); - Iterator iterator = m_supportedParameters.iterator(); - while (iterator.hasNext()) { - String param = iterator.next().toString(); - setParameter(param, config.getParameter(param)); - } - }//}}} - - //{{{ Implemented DOMConfiguration methods - - //{{{ canSetParameter() - - public boolean canSetParameter(String name, Object value) { - - if (value == null) { - return (m_supportedParameters.indexOf(name) != -1); - } - - if (value instanceof Boolean) { - boolean booleanValue = ((Boolean)value).booleanValue(); - - //couldn't think of a slicker way to do this - //that was worth the time to implement - //and extra processing. - if (name.equals(CANONICAL_FORM)) { - return !booleanValue; - } - if (name.equals(CDATA_SECTIONS)) { - return true; - } - if (name.equals(CHAR_NORMALIZATION)) { - return !booleanValue; - } - if (name.equals(COMMENTS)) { - return true; - } - if (name.equals(DATATYPE_NORMALIZATION)) { - return true; - } - if (name.equals(ENTITIES)) { - return true; - } - if (name.equals(WELL_FORMED)) { - return true; - } - if (name.equals(INFOSET)) { - return true; - } - if (name.equals(NAMESPACES)) { - return true; - } - if (name.equals(NAMESPACE_DECLARATIONS)) { - return true; - } - if (name.equals(NORMALIZE_CHARS)) { - return true; - } - if (name.equals(SPLIT_CDATA)) { - return true; - } - if (name.equals(VALIDATE_XML)) { - return !booleanValue; - } - if (name.equals(VALIDATE_IF_SCHEMA)) { - return !booleanValue; - } - if (name.equals(WS_IN_ELEMENT_CONTENT)) { - return true; - } - - if (name.equals(DISCARD_DEFAULT_CONTENT)) { - return true; - } - if (name.equals(FORMAT_XML)) { - return true; - } - if (name.equals(IGNORE_UNKNOWN_CHAR_DENORM)) { - return booleanValue; - } - if (name.equals(XML_DECLARATION)) { - return true; - } - if (name.equals(SOFT_TABS)) { - return true; - } - - return false; - } else { - if (name.equals(ERROR_HANDLER)) { - if (value instanceof DOMErrorHandler) { - return true; - } - } - if (name.equals(INDENT)) { - if (value instanceof Integer) { - return true; - } - } - if (name.equals(XML_ENCODING)) { - if (value instanceof String) { - return true; - } - } - } - return false; - }//}}} - - //{{{ getParameter() - - public Object getParameter(String name) throws DOMException { - - if (m_supportedParameters.indexOf(name) != -1) { - - if (name.equals("infoset")) { - boolean namespaceDeclarations = getFeature(NAMESPACE_DECLARATIONS); - boolean validateIfSchema = getFeature(VALIDATE_IF_SCHEMA); - boolean entities = getFeature(ENTITIES); - boolean datatypeNormalization = getFeature(DATATYPE_NORMALIZATION); - boolean cdataSections = getFeature(CDATA_SECTIONS); - - boolean whitespace = getFeature(WS_IN_ELEMENT_CONTENT); - boolean comments = getFeature(COMMENTS); - boolean namespaces = getFeature(NAMESPACES); - - return (Boolean.valueOf(!namespaceDeclarations && - !validateIfSchema && - !entities && - !datatypeNormalization && - !cdataSections && - whitespace && - comments && - namespaces)); - } else { - return m_parameters.get(name); - } - - } else { - - throw new DOMException(DOMException.NOT_FOUND_ERR ,"NOT_FOUND_ERR: Parameter "+name+" not recognized"); - - } - }//}}} - - //{{{ getParameterNames() - - public DOMStringList getParameterNames() { - return new DOMStringListImpl(m_supportedParameters); - }//}}} - - //{{{ setParameter() - - public void setParameter(String name, Object value) throws DOMException { - - if (value instanceof String && - (value.toString().equalsIgnoreCase("true") || - value.toString().equalsIgnoreCase("false"))) - { - Log.log(Log.WARNING,this, "Possibly setting XML serializer config boolean feature "+name+" with string value"); - } - - if (m_supportedParameters.indexOf(name) != -1) { - if ( value != null ) { - if (canSetParameter(name, value)) { - /* - if the parameter is infoset - then force the other parameters to - values that the infoset option - requires. - */ - if (name.equals(INFOSET)) { - setFeature(NAMESPACE_DECLARATIONS,false); - setFeature(VALIDATE_IF_SCHEMA, false); - setFeature(ENTITIES, false); - setFeature(DATATYPE_NORMALIZATION,false); - setFeature(CDATA_SECTIONS, false); - - setFeature(WS_IN_ELEMENT_CONTENT, true); - setFeature(COMMENTS, true); - setFeature(NAMESPACES, true); - return; - } - if (name.equals(FORMAT_XML) && ((Boolean)value).booleanValue()) { - /* - The element-content-whitespace parameter is ignored - when serializing since the parameter only makes sense - when the document is validated by DTD or Schema that - specifies that an element MUST have only child elements - (element-content). - - Also if the DOM validates this info when being edited - then the serializer could never write out whitespace - in element content without invalidating the document. - See - http://xml.apache.org/xerces2-j/javadocs/dom3-api/index.html - Section 2.10 - */ - // setFeature(WS_IN_ELEMENT_CONTENT, false); - setFeature(CANONICAL_FORM, false); - } - // if (name.equals(WS_IN_ELEMENT_CONTENT) && ((Boolean)value).booleanValue()) { - // setFeature(FORMAT_XML, false); - // } - - m_parameters.put(name, value); - - } else { - throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Parameter "+name+" and value "+value.toString()+" not supported."); - } - } else { - m_parameters.remove(name); - } - } else { - throw new DOMException(DOMException.NOT_FOUND_ERR, "Parameter "+name+" is not recognized."); - } - }//}}} - - //}}} - - //{{{ getFeature() - - /** - * <p>A convenience method to retrieve the value that a boolean - * parameter (feature) is set to.</p> - * @param name The name of the feature to get the value of - * @return The current setting for the given feature - */ - public boolean getFeature(String name) throws DOMException { - Object parameter = getParameter(name); - - if (name.equals("error-handler") || name.equals("indent") || !(parameter instanceof Boolean)) { - throw new DOMException(DOMException.NOT_FOUND_ERR, "NOT_FOUND_ERR: "+name+" is not a feature."); - } - return ((Boolean)parameter).booleanValue(); - - }//}}} - - //{{{ setFeature() - - /** - * <p>A convenience method to set the value of a boolean parameter (feature)</p> - * @param name The feature to set the value of - * @param value The boolean value to set to the feature - */ - public void setFeature(String name, boolean value) throws DOMException { - setParameter(name, Boolean.valueOf(value)); - }//}}} - - //{{{ Private static members - - private static ArrayList m_supportedParameters = null; - - static { - //create a vector of the supported parameters - m_supportedParameters = new ArrayList(22); - - //DOMConfiguration defined parameters - m_supportedParameters.add(CANONICAL_FORM); - m_supportedParameters.add(CDATA_SECTIONS); - m_supportedParameters.add(CHAR_NORMALIZATION); - m_supportedParameters.add(COMMENTS); - m_supportedParameters.add(DATATYPE_NORMALIZATION); - m_supportedParameters.add(ENTITIES); - m_supportedParameters.add(ERROR_HANDLER); - m_supportedParameters.add(INFOSET); - m_supportedParameters.add(NAMESPACES); - m_supportedParameters.add(NAMESPACE_DECLARATIONS); - m_supportedParameters.add(NORMALIZE_CHARS); - m_supportedParameters.add(SPLIT_CDATA); - m_supportedParameters.add(VALIDATE_XML); - m_supportedParameters.add(VALIDATE_IF_SCHEMA); - m_supportedParameters.add(WELL_FORMED); - m_supportedParameters.add(WS_IN_ELEMENT_CONTENT); - - //LSSerializer defined parameters - m_supportedParameters.add(DISCARD_DEFAULT_CONTENT); - m_supportedParameters.add(FORMAT_XML); - m_supportedParameters.add(IGNORE_UNKNOWN_CHAR_DENORM); - m_supportedParameters.add(XML_DECLARATION); - - //Additional parameters supported by DOMSerializerConfiguration - m_supportedParameters.add(SOFT_TABS); - m_supportedParameters.add(INDENT); - m_supportedParameters.add(XML_ENCODING); - }//}}} - - //{{{ Private members - - //{{{ DOMStringListImpl class - - private static class DOMStringListImpl implements DOMStringList { - - //{{{ DOMStringListImpl constructor - - public DOMStringListImpl(ArrayList list) { - m_list = list; - }//}}} - - //{{{ contains() - - public boolean contains(String str) { - for (int i=0; i<m_list.size(); i++) { - if (m_list.get(i).toString().equals(str)) { - return true; - } - } - return false; - }//}}} - - //{{{ getLength() - - public int getLength() { - return m_list.size(); - }//}}} - - //{{{ item() - - public String item(int index) { - return m_list.get(index).toString(); - }//}}} - - //{{{ Private members - private ArrayList m_list; - //}}} - - }//}}} - - private Hashtable m_parameters = new Hashtable(16); - - //}}} -} Deleted: branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMSerializerException.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMSerializerException.java 2006-09-06 19:20:54 UTC (rev 1238) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMSerializerException.java 2006-09-06 19:26:53 UTC (rev 1239) @@ -1,65 +0,0 @@ -/* -DOMSerializerException.java -:tabSize=4:indentSize=4:noTabs=true: -:folding=explicit:collapseFolds=1: - -Copyright (C) 2002 Ian Lewis (Ian...@me...) - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -Optionally, you may find a copy of the GNU General Public License -from http://www.fsf.org/copyleft/gpl.txt -*/ - -package net.sourceforge.jsxe.dom; - -//{{{ imports -/* -All classes are listed explicitly so -it is easy to see which package it -belongs to. -*/ - -//{{{ DOM classes -import org.w3c.dom.DOMError; -//}}} - -//}}} - -/** - * Signals that a serialization error of some kind has occurred. - * @author <a href="mailto:IanLewis at member dot fsf dot org">Ian Lewis</a> - * @version $Id$ - * @see DOMSerializer - */ -public class DOMSerializerException extends Exception { - - //{{{ DOMSerializerException constructor - - public DOMSerializerException(DOMError err) { - super(((Throwable)err.getRelatedException()).getMessage()); - error = err; - }//}}} - - //{{{ getError() - - public DOMError getError() { - return error; - }//}}} - - //{{{ Private members - private DOMError error; - //}}} - -} Copied: branches/jsxe2/src/net/sourceforge/jsxe/dom/ls/DOMSerializer.java (from rev 1232, branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMSerializer.java) =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/ls/DOMSerializer.java (rev 0) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/ls/DOMSerializer.java 2006-09-06 19:26:53 UTC (rev 1239) @@ -0,0 +1,825 @@ +/* +DOMSerializer.java +:tabSize=4:indentSize=4:noTabs=true: +:folding=explicit:collapseFolds=1: + +This attempts to conform to the DOM3 implementation in Xerces. It tries to +conform to DOM3 as of Xerces 2.6.0. I'm not one to stay on the bleeding edge +but it is as close to a standard interface for load & save as you can get +and I didn't want to work around the fact that current serializers aren't +very good. + +Copyright (C) 2002 Ian Lewis (Ian...@me...) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +Optionally, you may find a copy of the GNU General Public License +from http://www.fsf.org/copyleft/gpl.txt +*/ + +package net.sourceforge.jsxe.dom.ls; + +//{{{ imports +/* +All classes are listed explicitly so +it is easy to see which ... [truncated message content] |
From: <ian...@us...> - 2006-09-06 19:21:07
|
Revision: 1238 http://svn.sourceforge.net/jsxe/?rev=1238&view=rev Author: ian_lewis Date: 2006-09-06 12:20:54 -0700 (Wed, 06 Sep 2006) Log Message: ----------- Moved serialization classes to net.sourceforge.jsxe.dom.ls Modified Paths: -------------- branches/jsxe2/src/net/sourceforge/jsxe/BufferHistory.java branches/jsxe2/src/net/sourceforge/jsxe/dom/AdapterNode.java branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java Added Paths: ----------- branches/jsxe2/src/net/sourceforge/jsxe/dom/ls/ branches/jsxe2/src/net/sourceforge/jsxe/dom/ls/DOMOutput.java branches/jsxe2/src/net/sourceforge/jsxe/dom/ls/DefaultDOMLocator.java Removed Paths: ------------- branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMOutput.java branches/jsxe2/src/net/sourceforge/jsxe/dom/DefaultDOMLocator.java Modified: branches/jsxe2/src/net/sourceforge/jsxe/BufferHistory.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/BufferHistory.java 2006-09-06 19:13:21 UTC (rev 1237) +++ branches/jsxe2/src/net/sourceforge/jsxe/BufferHistory.java 2006-09-06 19:20:54 UTC (rev 1238) @@ -55,9 +55,9 @@ //}}} //{{{ jsXe classes -import net.sourceforge.jsxe.dom.DOMOutput; -import net.sourceforge.jsxe.dom.DOMSerializer; -import net.sourceforge.jsxe.dom.DOMSerializerConfiguration; +import net.sourceforge.jsxe.dom.ls.DOMOutput; +import net.sourceforge.jsxe.dom.ls.DOMSerializer; +import net.sourceforge.jsxe.dom.ls.DOMSerializerConfiguration; import net.sourceforge.jsxe.util.Log; //}}} Modified: branches/jsxe2/src/net/sourceforge/jsxe/dom/AdapterNode.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/AdapterNode.java 2006-09-06 19:13:21 UTC (rev 1237) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/AdapterNode.java 2006-09-06 19:20:54 UTC (rev 1238) @@ -33,6 +33,7 @@ import net.sourceforge.jsxe.util.MiscUtilities; import net.sourceforge.jsxe.dom.undo.*; import net.sourceforge.jsxe.dom.completion.*; +import net.sourceforge.jsxe.dom.ls.DOMSerializer; //}}} //{{{ Java Base Classes Deleted: branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMOutput.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMOutput.java 2006-09-06 19:13:21 UTC (rev 1237) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMOutput.java 2006-09-06 19:20:54 UTC (rev 1238) @@ -1,129 +0,0 @@ -/* -DOMOutput.java -:tabSize=4:indentSize=4:noTabs=true: -:folding=explicit:collapseFolds=1: - -Copyright (C) 2002 Ian Lewis (Ian...@me...) - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -Optionally, you may find a copy of the GNU General Public License -from http://www.fsf.org/copyleft/gpl.txt -*/ - -package net.sourceforge.jsxe.dom; - -//{{{ imports - -//{{{ DOM classes -import org.w3c.dom.ls.LSOutput; -//}}} - -//{{{ Java classes -import java.io.OutputStream; -import java.io.Writer; -//}}} - -//}}} - -/** - * An implementation of the LSOutput interface for use with the DOMSerializer - * class. This object is used when generating locations into a document. - * @author <a href="mailto:IanLewis at member dot fsf dot org">Ian Lewis</a> - * @version $Id$ - * @see DOMSerializer - */ -public class DOMOutput implements LSOutput { - - //{{{ DOMOutput constructor - - public DOMOutput(OutputStream byteStream, String encoding) { - m_byteStream = byteStream; - m_encoding = encoding; - }//}}} - - //{{{ DOMOutput constructor - - public DOMOutput(String systemId, String encoding) { - m_systemId = systemId; - m_encoding = encoding; - }//}}} - - //{{{ DOMOutput constructor - - public DOMOutput(Writer characterStream) { - m_characterStream = characterStream; - }//}}} - - //{{{ Implemented LSOutput methods - - //{{{ getByteStream() - - public OutputStream getByteStream() { - return m_byteStream; - }//}}} - - //{{{ getCharacterStream() - - public Writer getCharacterStream() { - return m_characterStream; - }//}}} - - //{{{ getEncoding() - - public String getEncoding() { - return m_encoding; - }//}}} - - //{{{ getSystemId() - - public String getSystemId() { - return m_systemId; - }//}}} - - //{{{ getByteStream() - - public void setByteStream(OutputStream byteStream) { - m_byteStream = byteStream; - }//}}} - - //{{{ setCharacterStream() - - public void setCharacterStream(Writer characterStream) { - m_characterStream = characterStream; - }//}}} - - //{{{ setEncoding() - - public void setEncoding(String encoding) { - m_encoding = encoding; - }//}}} - - //{{{ setSystemId() - - public void setSystemId(String systemId) { - m_systemId = systemId; - }//}}} - - //}}} - - //{{{ Private members - - private OutputStream m_byteStream; - private Writer m_characterStream; - private String m_systemId; - private String m_encoding; - - //}}} -} Deleted: branches/jsxe2/src/net/sourceforge/jsxe/dom/DefaultDOMLocator.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/DefaultDOMLocator.java 2006-09-06 19:13:21 UTC (rev 1237) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/DefaultDOMLocator.java 2006-09-06 19:20:54 UTC (rev 1238) @@ -1,111 +0,0 @@ -/* -DefaultDOMLocator.java -:tabSize=4:indentSize=4:noTabs=true: -:folding=explicit:collapseFolds=1: - -Copyright (C) 2002 Ian Lewis (Ian...@me...) - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -Optionally, you may find a copy of the GNU General Public License -from http://www.fsf.org/copyleft/gpl.txt -*/ - -package net.sourceforge.jsxe.dom; - -//{{{ imports -/* -All classes are listed explicitly so -it is easy to see which package it -belongs to. -*/ - -//{{{ DOM classes -import org.w3c.dom.Node; -import org.w3c.dom.DOMLocator; -//}}} - -//}}} - -public class DefaultDOMLocator implements DOMLocator { - - //{{{ DefaultDOMLocator constructor - - public DefaultDOMLocator() { - m_column = -1; - m_line = -1; - m_offset = -1; - }//}}} - - //{{{ DefaultDOMLocator constructor - - public DefaultDOMLocator(Node node, int lineno, int col, int byteOffset, String uri) { - m_line = lineno; - m_column = col; - m_errorNode = node; - m_offset = byteOffset; - m_uri = uri; - }//}}} - - //{{{ Implemented DOMLocator methods - - //{{{ getByteOffset() - - public int getByteOffset() { - return m_offset; - }//}}} - - //{{{ getColumnNumber() - - public int getColumnNumber() { - return m_column; - }//}}} - - //{{{ getRelatedNode() - - public Node getRelatedNode() { - return m_errorNode; - }//}}} - - //{{{ getLineNumber() - - public int getLineNumber() { - return m_line; - }//}}} - - //{{{ getUri() - - public String getUri() { - return m_uri; - }//}}} - - //{{{ getUtf16Offset() - - public int getUtf16Offset() { - //not sure how to approach the byte/UTF-16 offset stuff yet. - return -1; - }//}}} - - //}}} - - //{{{ Private members - - private int m_column; - private int m_line; - private int m_offset; - private Node m_errorNode; - private String m_uri; - - //}}} -} Modified: branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-09-06 19:13:21 UTC (rev 1237) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java 2006-09-06 19:20:54 UTC (rev 1238) @@ -35,6 +35,7 @@ import net.sourceforge.jsxe.util.MiscUtilities; import net.sourceforge.jsxe.dom.completion.*; import net.sourceforge.jsxe.dom.undo.*; +import net.sourceforge.jsxe.dom.ls.*; //}}} //{{{ DOM classes Copied: branches/jsxe2/src/net/sourceforge/jsxe/dom/ls/DOMOutput.java (from rev 1232, branches/jsxe2/src/net/sourceforge/jsxe/dom/DOMOutput.java) =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/ls/DOMOutput.java (rev 0) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/ls/DOMOutput.java 2006-09-06 19:20:54 UTC (rev 1238) @@ -0,0 +1,129 @@ +/* +DOMOutput.java +:tabSize=4:indentSize=4:noTabs=true: +:folding=explicit:collapseFolds=1: + +Copyright (C) 2002 Ian Lewis (Ian...@me...) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +Optionally, you may find a copy of the GNU General Public License +from http://www.fsf.org/copyleft/gpl.txt +*/ + +package net.sourceforge.jsxe.dom.ls; + +//{{{ imports + +//{{{ DOM classes +import org.w3c.dom.ls.LSOutput; +//}}} + +//{{{ Java classes +import java.io.OutputStream; +import java.io.Writer; +//}}} + +//}}} + +/** + * An implementation of the LSOutput interface for use with the DOMSerializer + * class. This object is used when generating locations into a document. + * @author <a href="mailto:IanLewis at member dot fsf dot org">Ian Lewis</a> + * @version $Id$ + * @see DOMSerializer + */ +public class DOMOutput implements LSOutput { + + //{{{ DOMOutput constructor + + public DOMOutput(OutputStream byteStream, String encoding) { + m_byteStream = byteStream; + m_encoding = encoding; + }//}}} + + //{{{ DOMOutput constructor + + public DOMOutput(String systemId, String encoding) { + m_systemId = systemId; + m_encoding = encoding; + }//}}} + + //{{{ DOMOutput constructor + + public DOMOutput(Writer characterStream) { + m_characterStream = characterStream; + }//}}} + + //{{{ Implemented LSOutput methods + + //{{{ getByteStream() + + public OutputStream getByteStream() { + return m_byteStream; + }//}}} + + //{{{ getCharacterStream() + + public Writer getCharacterStream() { + return m_characterStream; + }//}}} + + //{{{ getEncoding() + + public String getEncoding() { + return m_encoding; + }//}}} + + //{{{ getSystemId() + + public String getSystemId() { + return m_systemId; + }//}}} + + //{{{ getByteStream() + + public void setByteStream(OutputStream byteStream) { + m_byteStream = byteStream; + }//}}} + + //{{{ setCharacterStream() + + public void setCharacterStream(Writer characterStream) { + m_characterStream = characterStream; + }//}}} + + //{{{ setEncoding() + + public void setEncoding(String encoding) { + m_encoding = encoding; + }//}}} + + //{{{ setSystemId() + + public void setSystemId(String systemId) { + m_systemId = systemId; + }//}}} + + //}}} + + //{{{ Private members + + private OutputStream m_byteStream; + private Writer m_characterStream; + private String m_systemId; + private String m_encoding; + + //}}} +} Copied: branches/jsxe2/src/net/sourceforge/jsxe/dom/ls/DefaultDOMLocator.java (from rev 1232, branches/jsxe2/src/net/sourceforge/jsxe/dom/DefaultDOMLocator.java) =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/ls/DefaultDOMLocator.java (rev 0) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/ls/DefaultDOMLocator.java 2006-09-06 19:20:54 UTC (rev 1238) @@ -0,0 +1,111 @@ +/* +DefaultDOMLocator.java +:tabSize=4:indentSize=4:noTabs=true: +:folding=explicit:collapseFolds=1: + +Copyright (C) 2002 Ian Lewis (Ian...@me...) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +Optionally, you may find a copy of the GNU General Public License +from http://www.fsf.org/copyleft/gpl.txt +*/ + +package net.sourceforge.jsxe.dom.ls; + +//{{{ imports +/* +All classes are listed explicitly so +it is easy to see which package it +belongs to. +*/ + +//{{{ DOM classes +import org.w3c.dom.Node; +import org.w3c.dom.DOMLocator; +//}}} + +//}}} + +public class DefaultDOMLocator implements DOMLocator { + + //{{{ DefaultDOMLocator constructor + + public DefaultDOMLocator() { + m_column = -1; + m_line = -1; + m_offset = -1; + }//}}} + + //{{{ DefaultDOMLocator constructor + + public DefaultDOMLocator(Node node, int lineno, int col, int byteOffset, String uri) { + m_line = lineno; + m_column = col; + m_errorNode = node; + m_offset = byteOffset; + m_uri = uri; + }//}}} + + //{{{ Implemented DOMLocator methods + + //{{{ getByteOffset() + + public int getByteOffset() { + return m_offset; + }//}}} + + //{{{ getColumnNumber() + + public int getColumnNumber() { + return m_column; + }//}}} + + //{{{ getRelatedNode() + + public Node getRelatedNode() { + return m_errorNode; + }//}}} + + //{{{ getLineNumber() + + public int getLineNumber() { + return m_line; + }//}}} + + //{{{ getUri() + + public String getUri() { + return m_uri; + }//}}} + + //{{{ getUtf16Offset() + + public int getUtf16Offset() { + //not sure how to approach the byte/UTF-16 offset stuff yet. + return -1; + }//}}} + + //}}} + + //{{{ Private members + + private int m_column; + private int m_line; + private int m_offset; + private Node m_errorNode; + private String m_uri; + + //}}} +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-06 19:13:29
|
Revision: 1237 http://svn.sourceforge.net/jsxe/?rev=1237&view=rev Author: ian_lewis Date: 2006-09-06 12:13:21 -0700 (Wed, 06 Sep 2006) Log Message: ----------- Updated AdapterNode to use the dom3 renameNode method Modified Paths: -------------- branches/jsxe2/src/net/sourceforge/jsxe/dom/AdapterNode.java Modified: branches/jsxe2/src/net/sourceforge/jsxe/dom/AdapterNode.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom/AdapterNode.java 2006-09-05 15:55:49 UTC (rev 1236) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom/AdapterNode.java 2006-09-06 19:13:21 UTC (rev 1237) @@ -1100,9 +1100,7 @@ * should only be called on an element node. */ private void renameElementNode(String prefix, String localName) throws DOMException { - //get the nodes needed - Node parent = m_domNode.getParentNode(); - NodeList children = m_domNode.getChildNodes(); + Document document = m_domNode.getOwnerDocument(); //replace the changed node; maintain the namespace URI; @@ -1113,23 +1111,7 @@ String nsURI = lookupNamespaceURI(prefix);; - Element newNode = document.createElementNS(nsURI, qualifiedName); - NamedNodeMap attrs = m_domNode.getAttributes(); - int attrlength = attrs.getLength(); - - for(int i = 0; i < attrlength; i++) { - Node attr = attrs.item(i); - newNode.setAttributeNS(attr.getNamespaceURI(), attr.getNodeName(), attr.getNodeValue()); - } - - int length = children.getLength(); - for (int i = 0; i < length; i++ ) { - Node child = children.item(0); - m_domNode.removeChild(child); - newNode.appendChild(child); - } - parent.replaceChild(newNode, m_domNode); - m_domNode = newNode; + m_domNode = document.renameNode(m_domNode, nsURI, qualifiedName); }//}}} //{{{ renamePINode() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-05 15:55:54
|
Revision: 1236 http://svn.sourceforge.net/jsxe/?rev=1236&view=rev Author: ian_lewis Date: 2006-09-05 08:55:49 -0700 (Tue, 05 Sep 2006) Log Message: ----------- fixed bad edit to BufferHistory.java Modified Paths: -------------- branches/jsxe2/src/net/sourceforge/jsxe/BufferHistory.java Modified: branches/jsxe2/src/net/sourceforge/jsxe/BufferHistory.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/BufferHistory.java 2006-09-05 15:47:51 UTC (rev 1235) +++ branches/jsxe2/src/net/sourceforge/jsxe/BufferHistory.java 2006-09-05 15:55:49 UTC (rev 1236) @@ -479,7 +479,6 @@ m_includeKeys.add(DocumentBuffer.INDENT); m_includeKeys.add(DocumentBuffer.IS_USING_SOFT_TABS); m_includeKeys.add(DocumentBuffer.IS_VALIDATING); - m_excludeKeys.add("xmldocument.dirty"); } //}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-05 15:51:36
|
Revision: 1235 http://svn.sourceforge.net/jsxe/?rev=1235&view=rev Author: ian_lewis Date: 2006-09-05 08:47:51 -0700 (Tue, 05 Sep 2006) Log Message: ----------- Merge from trunk/jsxe of rev. 1232 Modified Paths: -------------- branches/jsxe2/AUTHORS branches/jsxe2/Changelog branches/jsxe2/INSTALL branches/jsxe2/README branches/jsxe2/bin/jsXe.bat branches/jsxe2/bin/jsXe.sh branches/jsxe2/build.xml branches/jsxe2/src/net/sourceforge/jsxe/ActionManager.java branches/jsxe2/src/net/sourceforge/jsxe/BufferHistory.java branches/jsxe2/src/net/sourceforge/jsxe/CatalogManager.java branches/jsxe2/src/net/sourceforge/jsxe/CustomFileFilter.java branches/jsxe2/src/net/sourceforge/jsxe/DocumentBuffer.java branches/jsxe2/src/net/sourceforge/jsxe/LocalizedAction.java branches/jsxe2/src/net/sourceforge/jsxe/action/CopyAction.java branches/jsxe2/src/net/sourceforge/jsxe/action/CutAction.java branches/jsxe2/src/net/sourceforge/jsxe/action/FindAction.java branches/jsxe2/src/net/sourceforge/jsxe/action/FindNextAction.java branches/jsxe2/src/net/sourceforge/jsxe/action/OpenRecentFileAction.java branches/jsxe2/src/net/sourceforge/jsxe/action/PasteAction.java branches/jsxe2/src/net/sourceforge/jsxe/dom/AdapterNode.java branches/jsxe2/src/net/sourceforge/jsxe/dom/XMLDocument.java branches/jsxe2/src/net/sourceforge/jsxe/gui/GUIUtilities.java branches/jsxe2/src/net/sourceforge/jsxe/gui/Messages.java branches/jsxe2/src/net/sourceforge/jsxe/gui/TabbedView.java branches/jsxe2/src/net/sourceforge/jsxe/gui/menu/WrappingMenu.java branches/jsxe2/src/net/sourceforge/jsxe/jsXe.java branches/jsxe2/src/net/sourceforge/jsxe/msg/PropertyChanged.java branches/jsxe2/src/net/sourceforge/jsxe/options/GeneralOptionPane.java branches/jsxe2/src/net/sourceforge/jsxe/options/ShortcutsOptionPane.java branches/jsxe2/src/net/sourceforge/jsxe/properties Added Paths: ----------- branches/jsxe2/buildlib/avalon.jar branches/jsxe2/buildlib/batik.jar branches/jsxe2/buildlib/bsf.jar branches/jsxe2/buildlib/docbook/ branches/jsxe2/buildlib/docbook/VERSION branches/jsxe2/buildlib/docbook/catalog.xml branches/jsxe2/buildlib/docbook/common/ branches/jsxe2/buildlib/docbook/common/ChangeLog branches/jsxe2/buildlib/docbook/common/af.xml branches/jsxe2/buildlib/docbook/common/ar.xml branches/jsxe2/buildlib/docbook/common/autoidx-ng.xsl branches/jsxe2/buildlib/docbook/common/bg.xml branches/jsxe2/buildlib/docbook/common/bn.xml branches/jsxe2/buildlib/docbook/common/bs.xml branches/jsxe2/buildlib/docbook/common/ca.xml branches/jsxe2/buildlib/docbook/common/common.xsl branches/jsxe2/buildlib/docbook/common/cs.xml branches/jsxe2/buildlib/docbook/common/da.xml branches/jsxe2/buildlib/docbook/common/de.xml branches/jsxe2/buildlib/docbook/common/el.xml branches/jsxe2/buildlib/docbook/common/en.xml branches/jsxe2/buildlib/docbook/common/es.xml branches/jsxe2/buildlib/docbook/common/et.xml branches/jsxe2/buildlib/docbook/common/eu.xml branches/jsxe2/buildlib/docbook/common/fa.xml branches/jsxe2/buildlib/docbook/common/fi.xml branches/jsxe2/buildlib/docbook/common/fr.xml branches/jsxe2/buildlib/docbook/common/gentext.xsl branches/jsxe2/buildlib/docbook/common/he.xml branches/jsxe2/buildlib/docbook/common/hr.xml branches/jsxe2/buildlib/docbook/common/hu.xml branches/jsxe2/buildlib/docbook/common/id.xml branches/jsxe2/buildlib/docbook/common/it.xml branches/jsxe2/buildlib/docbook/common/ja.xml branches/jsxe2/buildlib/docbook/common/ko.xml branches/jsxe2/buildlib/docbook/common/l10n.dtd branches/jsxe2/buildlib/docbook/common/l10n.xml branches/jsxe2/buildlib/docbook/common/l10n.xsl branches/jsxe2/buildlib/docbook/common/la.xml branches/jsxe2/buildlib/docbook/common/labels.xsl branches/jsxe2/buildlib/docbook/common/lt.xml branches/jsxe2/buildlib/docbook/common/nl.xml branches/jsxe2/buildlib/docbook/common/nn.xml branches/jsxe2/buildlib/docbook/common/no.xml branches/jsxe2/buildlib/docbook/common/olink.xsl branches/jsxe2/buildlib/docbook/common/pi.xsl branches/jsxe2/buildlib/docbook/common/pl.xml branches/jsxe2/buildlib/docbook/common/pt.xml branches/jsxe2/buildlib/docbook/common/pt_br.xml branches/jsxe2/buildlib/docbook/common/ro.xml branches/jsxe2/buildlib/docbook/common/ru.xml branches/jsxe2/buildlib/docbook/common/sk.xml branches/jsxe2/buildlib/docbook/common/sl.xml branches/jsxe2/buildlib/docbook/common/sr.xml branches/jsxe2/buildlib/docbook/common/sr_Latn.xml branches/jsxe2/buildlib/docbook/common/subtitles.xsl branches/jsxe2/buildlib/docbook/common/sv.xml branches/jsxe2/buildlib/docbook/common/table.xsl branches/jsxe2/buildlib/docbook/common/targetdatabase.dtd branches/jsxe2/buildlib/docbook/common/targets.xsl branches/jsxe2/buildlib/docbook/common/th.xml branches/jsxe2/buildlib/docbook/common/titles.xsl branches/jsxe2/buildlib/docbook/common/tr.xml branches/jsxe2/buildlib/docbook/common/uk.xml branches/jsxe2/buildlib/docbook/common/vi.xml branches/jsxe2/buildlib/docbook/common/xh.xml branches/jsxe2/buildlib/docbook/common/zh_cn.xml branches/jsxe2/buildlib/docbook/common/zh_tw.xml branches/jsxe2/buildlib/docbook/dtd/ branches/jsxe2/buildlib/docbook/dtd/calstblx.dtd branches/jsxe2/buildlib/docbook/dtd/catalog branches/jsxe2/buildlib/docbook/dtd/catalog.xml branches/jsxe2/buildlib/docbook/dtd/dbcentx.mod branches/jsxe2/buildlib/docbook/dtd/dbgenent.mod branches/jsxe2/buildlib/docbook/dtd/dbhierx.mod branches/jsxe2/buildlib/docbook/dtd/dbnotnx.mod branches/jsxe2/buildlib/docbook/dtd/dbpoolx.mod branches/jsxe2/buildlib/docbook/dtd/docbookx.dtd branches/jsxe2/buildlib/docbook/dtd/ent/ branches/jsxe2/buildlib/docbook/dtd/ent/ISOamsa.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOamsb.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOamsc.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOamsn.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOamso.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOamsr.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISObox.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOcyr1.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOcyr2.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOdia.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOgrk1.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOgrk2.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOgrk3.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOgrk4.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOlat1.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOlat2.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOnum.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOpub.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOtech.ent branches/jsxe2/buildlib/docbook/dtd/ent/catalog branches/jsxe2/buildlib/docbook/dtd/ent/catalog.xml branches/jsxe2/buildlib/docbook/dtd/htmltblx.mod branches/jsxe2/buildlib/docbook/dtd/soextblx.dtd branches/jsxe2/buildlib/docbook/fo/ branches/jsxe2/buildlib/docbook/fo/ChangeLog branches/jsxe2/buildlib/docbook/fo/admon.xsl branches/jsxe2/buildlib/docbook/fo/autoidx-ng.xsl branches/jsxe2/buildlib/docbook/fo/autoidx.xsl branches/jsxe2/buildlib/docbook/fo/autotoc.xsl branches/jsxe2/buildlib/docbook/fo/axf.xsl branches/jsxe2/buildlib/docbook/fo/biblio.xsl branches/jsxe2/buildlib/docbook/fo/block.xsl branches/jsxe2/buildlib/docbook/fo/callout.xsl branches/jsxe2/buildlib/docbook/fo/component.xsl branches/jsxe2/buildlib/docbook/fo/division.xsl branches/jsxe2/buildlib/docbook/fo/docbook.xsl branches/jsxe2/buildlib/docbook/fo/docbookng.xsl branches/jsxe2/buildlib/docbook/fo/ebnf.xsl branches/jsxe2/buildlib/docbook/fo/fo-patch-for-fop.xsl branches/jsxe2/buildlib/docbook/fo/fo-rtf.xsl branches/jsxe2/buildlib/docbook/fo/fo.xsl branches/jsxe2/buildlib/docbook/fo/footnote.xsl branches/jsxe2/buildlib/docbook/fo/fop.xsl branches/jsxe2/buildlib/docbook/fo/formal.xsl branches/jsxe2/buildlib/docbook/fo/glossary.xsl branches/jsxe2/buildlib/docbook/fo/graphics.xsl branches/jsxe2/buildlib/docbook/fo/htmltbl.xsl branches/jsxe2/buildlib/docbook/fo/index.xsl branches/jsxe2/buildlib/docbook/fo/info.xsl branches/jsxe2/buildlib/docbook/fo/inline.xsl branches/jsxe2/buildlib/docbook/fo/keywords.xsl branches/jsxe2/buildlib/docbook/fo/lists.xsl branches/jsxe2/buildlib/docbook/fo/math.xsl branches/jsxe2/buildlib/docbook/fo/pagesetup.xsl branches/jsxe2/buildlib/docbook/fo/param.ent branches/jsxe2/buildlib/docbook/fo/param.xml branches/jsxe2/buildlib/docbook/fo/param.xsl branches/jsxe2/buildlib/docbook/fo/param.xweb branches/jsxe2/buildlib/docbook/fo/passivetex.xsl branches/jsxe2/buildlib/docbook/fo/pdf2index branches/jsxe2/buildlib/docbook/fo/pi.xsl branches/jsxe2/buildlib/docbook/fo/profile-docbook.xsl branches/jsxe2/buildlib/docbook/fo/qandaset.xsl branches/jsxe2/buildlib/docbook/fo/refentry.xsl branches/jsxe2/buildlib/docbook/fo/sections.xsl branches/jsxe2/buildlib/docbook/fo/synop.xsl branches/jsxe2/buildlib/docbook/fo/table.xsl branches/jsxe2/buildlib/docbook/fo/task.xsl branches/jsxe2/buildlib/docbook/fo/titlepage.templates.xml branches/jsxe2/buildlib/docbook/fo/titlepage.templates.xsl branches/jsxe2/buildlib/docbook/fo/titlepage.xsl branches/jsxe2/buildlib/docbook/fo/toc.xsl branches/jsxe2/buildlib/docbook/fo/verbatim.xsl branches/jsxe2/buildlib/docbook/fo/xep.xsl branches/jsxe2/buildlib/docbook/fo/xref.xsl branches/jsxe2/buildlib/docbook/html/ branches/jsxe2/buildlib/docbook/html/ChangeLog branches/jsxe2/buildlib/docbook/html/admon.xsl branches/jsxe2/buildlib/docbook/html/autoidx-ng.xsl branches/jsxe2/buildlib/docbook/html/autoidx.xsl branches/jsxe2/buildlib/docbook/html/autotoc.xsl branches/jsxe2/buildlib/docbook/html/biblio.xsl branches/jsxe2/buildlib/docbook/html/block.xsl branches/jsxe2/buildlib/docbook/html/callout.xsl branches/jsxe2/buildlib/docbook/html/changebars.xsl branches/jsxe2/buildlib/docbook/html/chunk-code.xsl branches/jsxe2/buildlib/docbook/html/chunk-common.xsl branches/jsxe2/buildlib/docbook/html/chunk.xsl branches/jsxe2/buildlib/docbook/html/chunker.xsl branches/jsxe2/buildlib/docbook/html/chunkfast.xsl branches/jsxe2/buildlib/docbook/html/chunktoc.xsl branches/jsxe2/buildlib/docbook/html/component.xsl branches/jsxe2/buildlib/docbook/html/division.xsl branches/jsxe2/buildlib/docbook/html/docbook.xsl branches/jsxe2/buildlib/docbook/html/docbookng.xsl branches/jsxe2/buildlib/docbook/html/ebnf.xsl branches/jsxe2/buildlib/docbook/html/footnote.xsl branches/jsxe2/buildlib/docbook/html/formal.xsl branches/jsxe2/buildlib/docbook/html/glossary.xsl branches/jsxe2/buildlib/docbook/html/graphics.xsl branches/jsxe2/buildlib/docbook/html/html-rtf.xsl branches/jsxe2/buildlib/docbook/html/html.xsl branches/jsxe2/buildlib/docbook/html/htmltbl.xsl branches/jsxe2/buildlib/docbook/html/index.xsl branches/jsxe2/buildlib/docbook/html/info.xsl branches/jsxe2/buildlib/docbook/html/inline.xsl branches/jsxe2/buildlib/docbook/html/keywords.xsl branches/jsxe2/buildlib/docbook/html/lists.xsl branches/jsxe2/buildlib/docbook/html/maketoc.xsl branches/jsxe2/buildlib/docbook/html/manifest.xsl branches/jsxe2/buildlib/docbook/html/math.xsl branches/jsxe2/buildlib/docbook/html/oldchunker.xsl branches/jsxe2/buildlib/docbook/html/onechunk.xsl branches/jsxe2/buildlib/docbook/html/param.ent branches/jsxe2/buildlib/docbook/html/param.xml branches/jsxe2/buildlib/docbook/html/param.xsl branches/jsxe2/buildlib/docbook/html/param.xweb branches/jsxe2/buildlib/docbook/html/pi.xsl branches/jsxe2/buildlib/docbook/html/profile-chunk-code.xsl branches/jsxe2/buildlib/docbook/html/profile-chunk.xsl branches/jsxe2/buildlib/docbook/html/profile-docbook.xsl branches/jsxe2/buildlib/docbook/html/profile-onechunk.xsl branches/jsxe2/buildlib/docbook/html/qandaset.xsl branches/jsxe2/buildlib/docbook/html/refentry.xsl branches/jsxe2/buildlib/docbook/html/sections.xsl branches/jsxe2/buildlib/docbook/html/synop.xsl branches/jsxe2/buildlib/docbook/html/table.xsl branches/jsxe2/buildlib/docbook/html/task.xsl branches/jsxe2/buildlib/docbook/html/titlepage.templates.xml branches/jsxe2/buildlib/docbook/html/titlepage.templates.xsl branches/jsxe2/buildlib/docbook/html/titlepage.xsl branches/jsxe2/buildlib/docbook/html/toc.xsl branches/jsxe2/buildlib/docbook/html/verbatim.xsl branches/jsxe2/buildlib/docbook/html/xref.xsl branches/jsxe2/buildlib/docbook/lib/ branches/jsxe2/buildlib/docbook/lib/ChangeLog branches/jsxe2/buildlib/docbook/lib/lib.xml branches/jsxe2/buildlib/docbook/lib/lib.xsl branches/jsxe2/buildlib/docbook/lib/lib.xweb branches/jsxe2/buildlib/fop.jar branches/jsxe2/buildlib/js.jar branches/jsxe2/doc/ branches/jsxe2/doc/manual/ branches/jsxe2/doc/manual/manual.xml branches/jsxe2/installer/ branches/jsxe2/installer/done-HalfAnOS.html branches/jsxe2/installer/done-MacOS.html branches/jsxe2/installer/done-Unix.html branches/jsxe2/installer/done-VMS.html branches/jsxe2/installer/done-Windows.html branches/jsxe2/installer/gpl.html branches/jsxe2/installer/jsxe-installer.ico branches/jsxe2/installer/jsxe.desktop branches/jsxe2/installer/jsxe.png branches/jsxe2/installer/launch4j.xml branches/jsxe2/installer/readme.html branches/jsxe2/installer/src/ branches/jsxe2/installer/src/installer/ branches/jsxe2/installer/src/installer/BZip2Constants.java branches/jsxe2/installer/src/installer/CBZip2InputStream.java branches/jsxe2/installer/src/installer/CBZip2OutputStream.java branches/jsxe2/installer/src/installer/CRC.java branches/jsxe2/installer/src/installer/ConsoleInstall.java branches/jsxe2/installer/src/installer/ConsoleProgress.java branches/jsxe2/installer/src/installer/Install.java branches/jsxe2/installer/src/installer/InstallThread.java branches/jsxe2/installer/src/installer/InvalidHeaderException.java branches/jsxe2/installer/src/installer/NonInteractiveInstall.java branches/jsxe2/installer/src/installer/OperatingSystem.java branches/jsxe2/installer/src/installer/Progress.java branches/jsxe2/installer/src/installer/SwingInstall.java branches/jsxe2/installer/src/installer/TarBuffer.java branches/jsxe2/installer/src/installer/TarEntry.java branches/jsxe2/installer/src/installer/TarHeader.java branches/jsxe2/installer/src/installer/TarInputStream.java branches/jsxe2/installer/src/installer/TarOutputStream.java branches/jsxe2/installer/src/installer/VariableGridLayout.java branches/jsxe2/jsxe.ico branches/jsxe2/launch4j.xml branches/jsxe2/messages/messages.properties branches/jsxe2/messages/messages_de.properties branches/jsxe2/messages/messages_ja.properties branches/jsxe2/messages/messages_ru.properties branches/jsxe2/messages/messages_sv.properties branches/jsxe2/src/net/sourceforge/jsxe/action/ContextSpecificAction.java branches/jsxe2/src/net/sourceforge/jsxe/action/RedoAction.java branches/jsxe2/src/net/sourceforge/jsxe/action/UndoAction.java branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/ branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/AddNodeChange.java branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/AttributeChange.java branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/InsertEdit.java branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/NodeNameChange.java branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/NodePrefixChange.java branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/NodeValueChange.java branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/RemoveEdit.java branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/RemoveNodeChange.java branches/jsxe2/src/net/sourceforge/jsxe/gui/RolloverButton.java branches/jsxe2/src/net/sourceforge/jsxe/help/ branches/jsxe2/src/net/sourceforge/jsxe/help/HelpIndex.java branches/jsxe2/src/net/sourceforge/jsxe/help/HelpSearchPanel.java branches/jsxe2/src/net/sourceforge/jsxe/help/HelpTOCPanel.java branches/jsxe2/src/net/sourceforge/jsxe/help/HelpViewer.java branches/jsxe2/src/net/sourceforge/jsxe/icons/ArrowD.png branches/jsxe2/src/net/sourceforge/jsxe/icons/ArrowL.png branches/jsxe2/src/net/sourceforge/jsxe/icons/ArrowR.png branches/jsxe2/src/net/sourceforge/jsxe/icons/ArrowU.png branches/jsxe2/src/net/sourceforge/jsxe/msg/RedoEvent.java branches/jsxe2/src/net/sourceforge/jsxe/msg/UndoEvent.java Removed Paths: ------------- branches/jsxe2/buildlib/docbook/VERSION branches/jsxe2/buildlib/docbook/catalog.xml branches/jsxe2/buildlib/docbook/common/ branches/jsxe2/buildlib/docbook/common/ChangeLog branches/jsxe2/buildlib/docbook/common/af.xml branches/jsxe2/buildlib/docbook/common/ar.xml branches/jsxe2/buildlib/docbook/common/autoidx-ng.xsl branches/jsxe2/buildlib/docbook/common/bg.xml branches/jsxe2/buildlib/docbook/common/bn.xml branches/jsxe2/buildlib/docbook/common/bs.xml branches/jsxe2/buildlib/docbook/common/ca.xml branches/jsxe2/buildlib/docbook/common/common.xsl branches/jsxe2/buildlib/docbook/common/cs.xml branches/jsxe2/buildlib/docbook/common/da.xml branches/jsxe2/buildlib/docbook/common/de.xml branches/jsxe2/buildlib/docbook/common/el.xml branches/jsxe2/buildlib/docbook/common/en.xml branches/jsxe2/buildlib/docbook/common/es.xml branches/jsxe2/buildlib/docbook/common/et.xml branches/jsxe2/buildlib/docbook/common/eu.xml branches/jsxe2/buildlib/docbook/common/fa.xml branches/jsxe2/buildlib/docbook/common/fi.xml branches/jsxe2/buildlib/docbook/common/fr.xml branches/jsxe2/buildlib/docbook/common/gentext.xsl branches/jsxe2/buildlib/docbook/common/he.xml branches/jsxe2/buildlib/docbook/common/hr.xml branches/jsxe2/buildlib/docbook/common/hu.xml branches/jsxe2/buildlib/docbook/common/id.xml branches/jsxe2/buildlib/docbook/common/it.xml branches/jsxe2/buildlib/docbook/common/ja.xml branches/jsxe2/buildlib/docbook/common/ko.xml branches/jsxe2/buildlib/docbook/common/l10n.dtd branches/jsxe2/buildlib/docbook/common/l10n.xml branches/jsxe2/buildlib/docbook/common/l10n.xsl branches/jsxe2/buildlib/docbook/common/la.xml branches/jsxe2/buildlib/docbook/common/labels.xsl branches/jsxe2/buildlib/docbook/common/lt.xml branches/jsxe2/buildlib/docbook/common/nl.xml branches/jsxe2/buildlib/docbook/common/nn.xml branches/jsxe2/buildlib/docbook/common/no.xml branches/jsxe2/buildlib/docbook/common/olink.xsl branches/jsxe2/buildlib/docbook/common/pi.xsl branches/jsxe2/buildlib/docbook/common/pl.xml branches/jsxe2/buildlib/docbook/common/pt.xml branches/jsxe2/buildlib/docbook/common/pt_br.xml branches/jsxe2/buildlib/docbook/common/ro.xml branches/jsxe2/buildlib/docbook/common/ru.xml branches/jsxe2/buildlib/docbook/common/sk.xml branches/jsxe2/buildlib/docbook/common/sl.xml branches/jsxe2/buildlib/docbook/common/sr.xml branches/jsxe2/buildlib/docbook/common/sr_Latn.xml branches/jsxe2/buildlib/docbook/common/subtitles.xsl branches/jsxe2/buildlib/docbook/common/sv.xml branches/jsxe2/buildlib/docbook/common/table.xsl branches/jsxe2/buildlib/docbook/common/targetdatabase.dtd branches/jsxe2/buildlib/docbook/common/targets.xsl branches/jsxe2/buildlib/docbook/common/th.xml branches/jsxe2/buildlib/docbook/common/titles.xsl branches/jsxe2/buildlib/docbook/common/tr.xml branches/jsxe2/buildlib/docbook/common/uk.xml branches/jsxe2/buildlib/docbook/common/vi.xml branches/jsxe2/buildlib/docbook/common/xh.xml branches/jsxe2/buildlib/docbook/common/zh_cn.xml branches/jsxe2/buildlib/docbook/common/zh_tw.xml branches/jsxe2/buildlib/docbook/dtd/ branches/jsxe2/buildlib/docbook/dtd/calstblx.dtd branches/jsxe2/buildlib/docbook/dtd/catalog branches/jsxe2/buildlib/docbook/dtd/catalog.xml branches/jsxe2/buildlib/docbook/dtd/dbcentx.mod branches/jsxe2/buildlib/docbook/dtd/dbgenent.mod branches/jsxe2/buildlib/docbook/dtd/dbhierx.mod branches/jsxe2/buildlib/docbook/dtd/dbnotnx.mod branches/jsxe2/buildlib/docbook/dtd/dbpoolx.mod branches/jsxe2/buildlib/docbook/dtd/docbookx.dtd branches/jsxe2/buildlib/docbook/dtd/ent/ branches/jsxe2/buildlib/docbook/dtd/ent/ISOamsa.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOamsb.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOamsc.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOamsn.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOamso.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOamsr.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISObox.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOcyr1.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOcyr2.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOdia.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOgrk1.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOgrk2.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOgrk3.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOgrk4.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOlat1.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOlat2.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOnum.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOpub.ent branches/jsxe2/buildlib/docbook/dtd/ent/ISOtech.ent branches/jsxe2/buildlib/docbook/dtd/ent/catalog branches/jsxe2/buildlib/docbook/dtd/ent/catalog.xml branches/jsxe2/buildlib/docbook/dtd/htmltblx.mod branches/jsxe2/buildlib/docbook/dtd/soextblx.dtd branches/jsxe2/buildlib/docbook/fo/ branches/jsxe2/buildlib/docbook/fo/ChangeLog branches/jsxe2/buildlib/docbook/fo/admon.xsl branches/jsxe2/buildlib/docbook/fo/autoidx-ng.xsl branches/jsxe2/buildlib/docbook/fo/autoidx.xsl branches/jsxe2/buildlib/docbook/fo/autotoc.xsl branches/jsxe2/buildlib/docbook/fo/axf.xsl branches/jsxe2/buildlib/docbook/fo/biblio.xsl branches/jsxe2/buildlib/docbook/fo/block.xsl branches/jsxe2/buildlib/docbook/fo/callout.xsl branches/jsxe2/buildlib/docbook/fo/component.xsl branches/jsxe2/buildlib/docbook/fo/division.xsl branches/jsxe2/buildlib/docbook/fo/docbook.xsl branches/jsxe2/buildlib/docbook/fo/docbookng.xsl branches/jsxe2/buildlib/docbook/fo/ebnf.xsl branches/jsxe2/buildlib/docbook/fo/fo-patch-for-fop.xsl branches/jsxe2/buildlib/docbook/fo/fo-rtf.xsl branches/jsxe2/buildlib/docbook/fo/fo.xsl branches/jsxe2/buildlib/docbook/fo/footnote.xsl branches/jsxe2/buildlib/docbook/fo/fop.xsl branches/jsxe2/buildlib/docbook/fo/formal.xsl branches/jsxe2/buildlib/docbook/fo/glossary.xsl branches/jsxe2/buildlib/docbook/fo/graphics.xsl branches/jsxe2/buildlib/docbook/fo/htmltbl.xsl branches/jsxe2/buildlib/docbook/fo/index.xsl branches/jsxe2/buildlib/docbook/fo/info.xsl branches/jsxe2/buildlib/docbook/fo/inline.xsl branches/jsxe2/buildlib/docbook/fo/keywords.xsl branches/jsxe2/buildlib/docbook/fo/lists.xsl branches/jsxe2/buildlib/docbook/fo/math.xsl branches/jsxe2/buildlib/docbook/fo/pagesetup.xsl branches/jsxe2/buildlib/docbook/fo/param.ent branches/jsxe2/buildlib/docbook/fo/param.xml branches/jsxe2/buildlib/docbook/fo/param.xsl branches/jsxe2/buildlib/docbook/fo/param.xweb branches/jsxe2/buildlib/docbook/fo/passivetex.xsl branches/jsxe2/buildlib/docbook/fo/pdf2index branches/jsxe2/buildlib/docbook/fo/pi.xsl branches/jsxe2/buildlib/docbook/fo/profile-docbook.xsl branches/jsxe2/buildlib/docbook/fo/qandaset.xsl branches/jsxe2/buildlib/docbook/fo/refentry.xsl branches/jsxe2/buildlib/docbook/fo/sections.xsl branches/jsxe2/buildlib/docbook/fo/synop.xsl branches/jsxe2/buildlib/docbook/fo/table.xsl branches/jsxe2/buildlib/docbook/fo/task.xsl branches/jsxe2/buildlib/docbook/fo/titlepage.templates.xml branches/jsxe2/buildlib/docbook/fo/titlepage.templates.xsl branches/jsxe2/buildlib/docbook/fo/titlepage.xsl branches/jsxe2/buildlib/docbook/fo/toc.xsl branches/jsxe2/buildlib/docbook/fo/verbatim.xsl branches/jsxe2/buildlib/docbook/fo/xep.xsl branches/jsxe2/buildlib/docbook/fo/xref.xsl branches/jsxe2/buildlib/docbook/html/ branches/jsxe2/buildlib/docbook/html/ChangeLog branches/jsxe2/buildlib/docbook/html/admon.xsl branches/jsxe2/buildlib/docbook/html/autoidx-ng.xsl branches/jsxe2/buildlib/docbook/html/autoidx.xsl branches/jsxe2/buildlib/docbook/html/autotoc.xsl branches/jsxe2/buildlib/docbook/html/biblio.xsl branches/jsxe2/buildlib/docbook/html/block.xsl branches/jsxe2/buildlib/docbook/html/callout.xsl branches/jsxe2/buildlib/docbook/html/changebars.xsl branches/jsxe2/buildlib/docbook/html/chunk-code.xsl branches/jsxe2/buildlib/docbook/html/chunk-common.xsl branches/jsxe2/buildlib/docbook/html/chunk.xsl branches/jsxe2/buildlib/docbook/html/chunker.xsl branches/jsxe2/buildlib/docbook/html/chunkfast.xsl branches/jsxe2/buildlib/docbook/html/chunktoc.xsl branches/jsxe2/buildlib/docbook/html/component.xsl branches/jsxe2/buildlib/docbook/html/division.xsl branches/jsxe2/buildlib/docbook/html/docbook.xsl branches/jsxe2/buildlib/docbook/html/docbookng.xsl branches/jsxe2/buildlib/docbook/html/ebnf.xsl branches/jsxe2/buildlib/docbook/html/footnote.xsl branches/jsxe2/buildlib/docbook/html/formal.xsl branches/jsxe2/buildlib/docbook/html/glossary.xsl branches/jsxe2/buildlib/docbook/html/graphics.xsl branches/jsxe2/buildlib/docbook/html/html-rtf.xsl branches/jsxe2/buildlib/docbook/html/html.xsl branches/jsxe2/buildlib/docbook/html/htmltbl.xsl branches/jsxe2/buildlib/docbook/html/index.xsl branches/jsxe2/buildlib/docbook/html/info.xsl branches/jsxe2/buildlib/docbook/html/inline.xsl branches/jsxe2/buildlib/docbook/html/keywords.xsl branches/jsxe2/buildlib/docbook/html/lists.xsl branches/jsxe2/buildlib/docbook/html/maketoc.xsl branches/jsxe2/buildlib/docbook/html/manifest.xsl branches/jsxe2/buildlib/docbook/html/math.xsl branches/jsxe2/buildlib/docbook/html/oldchunker.xsl branches/jsxe2/buildlib/docbook/html/onechunk.xsl branches/jsxe2/buildlib/docbook/html/param.ent branches/jsxe2/buildlib/docbook/html/param.xml branches/jsxe2/buildlib/docbook/html/param.xsl branches/jsxe2/buildlib/docbook/html/param.xweb branches/jsxe2/buildlib/docbook/html/pi.xsl branches/jsxe2/buildlib/docbook/html/profile-chunk-code.xsl branches/jsxe2/buildlib/docbook/html/profile-chunk.xsl branches/jsxe2/buildlib/docbook/html/profile-docbook.xsl branches/jsxe2/buildlib/docbook/html/profile-onechunk.xsl branches/jsxe2/buildlib/docbook/html/qandaset.xsl branches/jsxe2/buildlib/docbook/html/refentry.xsl branches/jsxe2/buildlib/docbook/html/sections.xsl branches/jsxe2/buildlib/docbook/html/synop.xsl branches/jsxe2/buildlib/docbook/html/table.xsl branches/jsxe2/buildlib/docbook/html/task.xsl branches/jsxe2/buildlib/docbook/html/titlepage.templates.xml branches/jsxe2/buildlib/docbook/html/titlepage.templates.xsl branches/jsxe2/buildlib/docbook/html/titlepage.xsl branches/jsxe2/buildlib/docbook/html/toc.xsl branches/jsxe2/buildlib/docbook/html/verbatim.xsl branches/jsxe2/buildlib/docbook/html/xref.xsl branches/jsxe2/buildlib/docbook/lib/ branches/jsxe2/buildlib/docbook/lib/ChangeLog branches/jsxe2/buildlib/docbook/lib/lib.xml branches/jsxe2/buildlib/docbook/lib/lib.xsl branches/jsxe2/buildlib/docbook/lib/lib.xweb branches/jsxe2/buildlib/jsmoothgen-ant.jar branches/jsxe2/buildlib/skeletons/ branches/jsxe2/doc/manual/ branches/jsxe2/doc/manual/manual.xml branches/jsxe2/installer/done-HalfAnOS.html branches/jsxe2/installer/done-MacOS.html branches/jsxe2/installer/done-Unix.html branches/jsxe2/installer/done-VMS.html branches/jsxe2/installer/done-Windows.html branches/jsxe2/installer/gpl.html branches/jsxe2/installer/jsxe-installer.ico branches/jsxe2/installer/jsxe.desktop branches/jsxe2/installer/jsxe.png branches/jsxe2/installer/launch4j.xml branches/jsxe2/installer/readme.html branches/jsxe2/installer/src/ branches/jsxe2/installer/src/installer/ branches/jsxe2/installer/src/installer/BZip2Constants.java branches/jsxe2/installer/src/installer/CBZip2InputStream.java branches/jsxe2/installer/src/installer/CBZip2OutputStream.java branches/jsxe2/installer/src/installer/CRC.java branches/jsxe2/installer/src/installer/ConsoleInstall.java branches/jsxe2/installer/src/installer/ConsoleProgress.java branches/jsxe2/installer/src/installer/Install.java branches/jsxe2/installer/src/installer/InstallThread.java branches/jsxe2/installer/src/installer/InvalidHeaderException.java branches/jsxe2/installer/src/installer/NonInteractiveInstall.java branches/jsxe2/installer/src/installer/OperatingSystem.java branches/jsxe2/installer/src/installer/Progress.java branches/jsxe2/installer/src/installer/SwingInstall.java branches/jsxe2/installer/src/installer/TarBuffer.java branches/jsxe2/installer/src/installer/TarEntry.java branches/jsxe2/installer/src/installer/TarHeader.java branches/jsxe2/installer/src/installer/TarInputStream.java branches/jsxe2/installer/src/installer/TarOutputStream.java branches/jsxe2/installer/src/installer/VariableGridLayout.java branches/jsxe2/jsXe.jsmooth branches/jsxe2/messages/messages branches/jsxe2/messages/messages.de branches/jsxe2/messages/messages.ja branches/jsxe2/messages/messages.sv branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/AddNodeChange.java branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/AttributeChange.java branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/InsertEdit.java branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/NodeNameChange.java branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/NodePrefixChange.java branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/NodeValueChange.java branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/RemoveEdit.java branches/jsxe2/src/net/sourceforge/jsxe/dom/undo/RemoveNodeChange.java branches/jsxe2/src/net/sourceforge/jsxe/help/HelpIndex.java branches/jsxe2/src/net/sourceforge/jsxe/help/HelpSearchPanel.java branches/jsxe2/src/net/sourceforge/jsxe/help/HelpTOCPanel.java branches/jsxe2/src/net/sourceforge/jsxe/help/HelpViewer.java Modified: branches/jsxe2/AUTHORS =================================================================== --- branches/jsxe2/AUTHORS 2006-09-05 15:47:20 UTC (rev 1234) +++ branches/jsxe2/AUTHORS 2006-09-05 15:47:51 UTC (rev 1235) @@ -4,7 +4,7 @@ Translators: German (de) - Bianca Schoen Swedish (sv) - Patrik Johansson <pa...@it...> + Russian (ru) - Alexandr Gridnev <ale...@ya...> Past Contributers:\n\ Aaron Flatten <afl...@us...> - Bilel Remmache <rb...@us...> - SVM <svm...@us...> + Bilel Remmache <rb...@us...> \ No newline at end of file Modified: branches/jsxe2/Changelog =================================================================== --- branches/jsxe2/Changelog 2006-09-05 15:47:20 UTC (rev 1234) +++ branches/jsxe2/Changelog 2006-09-05 15:47:51 UTC (rev 1235) @@ -1,10 +1,82 @@ +08/31/2006 Ian Lewis <Ian...@me...> + + * Added new ContextSpecificActions to replace ViewSpecificActions. Now + actions such as cut and paste can be registered for specific components + not just a specific view. + +08/29/2006 Ian Lewis <Ian...@me...> + + * Fixed a memory leak with JMenuItems. ActionManager kept a cache of + Wrapper Action objects. JMenu items register listeners with those Actions + so the JMenuItems would never be Garbage collected. + * Fixed that the Find action had Ctrl-v as the default shortcut. Changed it + to Ctrl-f + +08/28/2006 Ian Lewis <Ian...@me...> + + * Changed the messages files to be named the standard ResourceBundle way. + * Fixed default key binding for exit. + * Added some new processing for generating jsXe's manual. + +08/27/2006 Ian Lewis <Ian...@me...> + + * Updated the launch4j script to set the absolute path of the lib directory + in the jre option to set the endorsed dirs. This will allow jsXe to be + launched from anywhere and still be able to find the right version of + Xerces. + * Updated the installer to create a script file in unix that uses the java + in the environment path and use the HotSpot server so that jsXe runs + faster at the cost of startup time and memory footprint. + * Added an option to display the full path to a file in the recent files + menu. Feature Request #1546371 + +08/21/2006 Ian Lewis <Ian...@me...> + + * Updated russian translation. + +08/18/2006 Ian Lewis <Ian...@me...> + + * Added a hack to disable view specific actions that aren't implemented by + the view. + +08/17/2006 Ian Lewis <Ian...@me...> + + * Updated the German translation thanks to Dieter Steiner + +08/12/2006 Ian Lewis <Ian...@me...> + + * Added support for running jsXe in a wrapped exe using launch4j. + * Added an installer for jsXe. The installer can be packaged in an exe for + easy use by windows users. + * Moved the windows integration into it's own component in the installer so + that it won't be installed on systems other than Windows. + +08/09/2006 Ian Lewis <Ian...@me...> + + * Added a new option to the Global Options dialog for the number of undo + operations to remember. + +08/08/2006 Ian Lewis <Ian...@me...> + + * Added undo/redo support for attributes. + 08/07/2006 Ian Lewis <Ian...@me...> + * Added temporary support for undo to jsXe. + * Added support for undo of text insert and delete. + * Added support for undo of changes to a node's name, value, and prefix. * Removed get/setStringProperty methods from XMLDocument since they aren't needed +08/05/2006 Ian Lewis <Ian...@me...> + + * Added core support for Undo/Redo. Undo/Redo will temporarily be view + specific. Eventually it will be entirely part of core after the + new data model is complete. + 08/03/2006 Ian Lewis <Ian...@me...> + * Added Russian translation thanks to Alexandr Gridnev. * More porting of jEdit's VFS classes to jsXe 07/29/2006 Ian Lewis <Ian...@me...> Modified: branches/jsxe2/INSTALL =================================================================== --- branches/jsxe2/INSTALL 2006-09-05 15:47:20 UTC (rev 1234) +++ branches/jsxe2/INSTALL 2006-09-05 15:47:51 UTC (rev 1235) @@ -1,7 +1,9 @@ REQUIREMENTS -Java 1.4.2 -Xerces 2.6.2 +Java >= 1.4.2 +Xerces >= 2.8.0 +Xalan >= 2.7.0 (for building jsXe's documentation) +launch4j >= 3.0.0pre1 (for building the installer from source) GETTING jsXe @@ -13,17 +15,32 @@ Once you have the source trees for both of these you should put them in a directory called 'jars' in your jsXe root folder. Once they are in that folder, the ant targets (compile, bin, src, etc.) will recognise those plugins and build -them if necessary. So something like this should do it: +them if necessary. -cvs checkout jsxe +You should check out jsxe to make a structure like this. This ensures that +when compiling jsXe the other views and will be compiled as well. It also +ensures that you can build jsxe's installer in binary release distributions. + +jsxe module => jsxe/ +treeview module (optional) => jsxe/jars/treeview +sourceview module (optional) => jsxe/jars/sourceview +jsxe installer (optional) => jsxe/installer +jsxe web module (optional) => web/ +launch4j (needed for win builds) => buildlib/launch4j + +So something like this should do it: + +svn checkout https://svn.sourceforge.net/svnroot/jsxe/trunk/jsxe cd jsxe mkdir jars cd jars -cvs checkout treeview -cvs checkout sourceview +svn checkout https://svn.sourceforge.net/svnroot/jsxe/trunk/treeview +svn checkout https://svn.sourceforge.net/svnroot/jsxe/trunk/sourceview BUILDING jsXe FROM SOURCE +** Requirements ** + This is pretty simple. You will need jakarta ANT and a Sun's javac compiler (others might work, I just haven't tested them). You will need the optional ant tasks installed as well. On some Linux distributions this may be a separate @@ -34,32 +51,56 @@ Xerces (A Xerces 2.8.0 binary distribution is not included in the CVS source tree. You can aquire it at at http://xml.apache.org/) The jar files xercesImpl.jar, xml-apis.jar, and resolver.jar from the 2.8.0 distribution are -required. These should be placed in a directory called lib in jsXe's root folder -(where you installed jsXe's source) or in the jre/lib/ext or lib/ext in your -JVM. These jar files will be included with jsXe distributions for convenience. +required. These should already be in a directory called lib in jsXe's root folder +(where you installed jsXe's source) but you will need to copy them in +the jre/lib/endorsed directory in your JVM. You will also need to put the +xalan.jar in the jre/lib/endorsed directory in order to build jsXe's +documentation. xalan.jar is not currently included with jsXe so you need to +download it from http://xml.apache.org/ -Simply typing 'ant' in jsXe's root directory will give you the +In order to build jsXe's installer or a windows distribution of jsXe you will +need to install launch4j (http://launch4j.sourceforge.net/). You can install it +in the buildlib directory or change the launch4j.dir property in the build.xml +file. You will also need to put the js.jar and bsf.jar in your classpath. These +files are found in the 'buildlib' directory. They are used in scripts for +calculating file sizes. + +** Building ** + +Simply typing 'ant -p' in jsXe's root directory will give you the available targets to use with ant. To just simply compile jsXe and the default views to a jar file you can type 'ant compile'. To build a binary distribution you will need to run the 'bin' target in the build.xml file. I do this by simply typing 'ant bin'. Source distributions can be built using the 'src' target by typing 'ant src'. +You can build jsXe's installer by running 'ant build-installer' which will +build jsXe's installer. The installer will be packaged in a jar file to be run +by java. + +You can build a windows distribution of jsXe by running the 'ant win'. This will +compile jsXe's installer and wrap it in an exe wrapper. The wrapper will search +for the appropriate java runtime with which to run jsXe. + INSTALLING jsXe Unpack the distribution file wherever you like. Normally you would install it in C:\Program Files\ or /usr/local/share/ or something like that. +Or + +Run the install program and follow the prompts to install jsXe. + RUNNING jsXe -You should have 1.4.2 or better of java and you need 2.6.2 of Xerces. +You should have 1.4.2 or better of java and you need 2.8.0 of Xerces. *Windows* Just run jsXe using the jsXe.exe in the install directory. The exe will detect your version of Java and run jsXe using that version. -*Unix* +*Unix/Linux* To run jsXe you should just run the java interpreter on the jsXe.jar file. There is a shell script or batch file included in the source tree for this purpose. Modified: branches/jsxe2/README =================================================================== --- branches/jsxe2/README 2006-09-05 15:47:20 UTC (rev 1234) +++ branches/jsxe2/README 2006-09-05 15:47:51 UTC (rev 1235) @@ -7,3 +7,22 @@ way of creating XML documents. It is geared towards simpler XML documents but will (eventually) be able to handle any XML document. Visit http://jsxe.sourceforge.net/ to learn more about this project. + +jsXe bundles the following libraries: + +- Xerces Java 2.8.0 is a XML parsing library released by the Apache foundation. + This library is released under the Apache license, which can be found at + http://www.apache.org/licenses/LICENSE-2.0 + +The jsXe installer bundles the following libraries: + +- org.apache.excalibur.bzip2 compression library. This library is + released under the Apache license, which can be found at + http://www.apache.org/licenses/LICENSE-2.0 + + The org.apache.excalibur.bzip2 web site is + <http://jakarta.apache.org/avalon/excalibur/bzip2/>. + +- com.ice.tar, by Tim Endres. This code is in the public domain. + + The com.ice.tar web site is <http://www.trustice.com/java/tar/>. \ No newline at end of file Modified: branches/jsxe2/bin/jsXe.bat =================================================================== --- branches/jsxe2/bin/jsXe.bat 2006-09-05 15:47:20 UTC (rev 1234) +++ branches/jsxe2/bin/jsXe.bat 2006-09-05 15:47:51 UTC (rev 1235) @@ -1,7 +1,7 @@ @ECHO OFF set JSXEDIR=. -set CLASSPATH=%JSXEDIR%/jsXe.jar;%JSXEDIR%/lib/xml-apis.jar;%JSXEDIR%/lib/xercesImpl.jar;%JSXEDIR%/lib/resolver.jar -set JSXE=net.sourceforge.jsxe.jsXe +rem set CLASSPATH=%JSXEDIR%/jsXe.jar;%JSXEDIR%/lib/xml-apis.jar;%JSXEDIR%/lib/xercesImpl.jar;%JSXEDIR%/lib/resolver.jar +rem set JSXE=net.sourceforge.jsxe.jsXe set JAVA_HEAP_SIZE=32 -java -mx%JAVA_HEAP_SIZE%m -cp %CLASSPATH% %JSXE% %1 %2 %3 %4 %5 %6 %7 %8 %9 -if errorlevel 1 pause +javaw -server -mx%JAVA_HEAP_SIZE%m -Djava.endorsed.dirs=%JSXEDIR%/lib -jar %JSXEDIR%/jsXe.jar %1 %2 %3 %4 %5 %6 %7 %8 %9 +if errorlevel 1 pause \ No newline at end of file Modified: branches/jsxe2/bin/jsXe.sh =================================================================== --- branches/jsxe2/bin/jsXe.sh 2006-09-05 15:47:20 UTC (rev 1234) +++ branches/jsxe2/bin/jsXe.sh 2006-09-05 15:47:51 UTC (rev 1235) @@ -1,6 +1,5 @@ #!/bin/sh +# Java heap size, in megabytes JSXEDIR=. -CLASSPATH=$JSXEDIR/jsXe.jar:$JSXEDIR/lib/xml-apis.jar:$JSXEDIR/lib/xercesImpl.jar:$JSXEDIR/lib/resolver.jar -JSXE=net.sourceforge.jsxe.jsXe JAVA_HEAP_SIZE=32 -exec java -mx${JAVA_HEAP_SIZE}m -cp $CLASSPATH $JSXE $@ +exec java -server -mx${JAVA_HEAP_SIZE}m -Djava.endorsed.dirs=${JSXEDIR}/lib ${JSXE} -jar ${JSXEDIR}/jsXe.jar $@ \ No newline at end of file Modified: branches/jsxe2/build.xml =================================================================== --- branches/jsxe2/build.xml 2006-09-05 15:47:20 UTC (rev 1234) +++ branches/jsxe2/build.xml 2006-09-05 15:47:51 UTC (rev 1235) @@ -7,23 +7,38 @@ Version: $Id$ You should check out jsxe to make a structure like this. This ensures that - when compiling jsXe the other views will be compiled as well. + when compiling jsXe the other views and will be compiled as well. It also + ensures that you can build jsxe's installer in binary release distributions. jsxe module => jsxe/ treeview module (optional) => jsxe/jars/treeview sourceview module (optional) => jsxe/jars/sourceview + jsxe installer (optional) => jsxe/installer jsxe web module (optional) => web/ - jsmooth ant task (optional) => buildlib/ + launch4j (needed for win builds) => buildlib/launch4j --> -<project basedir="." default="usage" name="jsXe"> +<project basedir="." default="compile" name="jsXe"> <description>jsXe - Java Simple XML Editor</description> <!-- {{{ ============ Initializes properties and variables ============= --> <target name="init"> <tstamp/> + <!-- {{{ app/build properties --> <property name="app.name" value="jsXe"/> + <property name="main.class" value="net.sourceforge.jsxe.jsXe"/> + <property name="major.version" value="0"/> + <property name="minor.version" value="5"/> + <property name="beta.version" value="4"/> + <property name="bugfix.version" value="0"/> + <property name="date.format" value="MM.dd.yyyy HH:mm:ss z"/> + <!-- Human Readable --> + <property name="app.version" value="0.5 pre4"/> + <!-- Used in filenames --> + <property name="app_version" value="05_pre4"/> + <!-- }}} --> + <!-- {{{ build directories --> <property name="root.dir" value="."/> <property name="build.dir" value="${root.dir}/build"/> <property name="src.dir" value="${root.dir}/src"/> @@ -31,47 +46,120 @@ <property name="bin.dir" value="${root.dir}/bin"/> <property name="messages.dir" value="${root.dir}/messages"/> <property name="build.messages" value="${build.dir}/messages"/> - <property name="docs.dir" value="${src.dir}/doc"/> + <property name="docs.dir" value="${root.dir}/doc"/> <property name="plugin.dir" value="${root.dir}/jars"/> + <property name="jsxe.jar" value="${build.dir}/${app.name}.jar"/> + <!-- jar file needs to be relative to the exe --> + <property name="launch4j.jsxe.jar" value="${app.name}.jar"/> + <property name="jsxe.exe" value="${build.dir}/${app.name}.exe"/> + <!-- launch4j doesn't like the ./ in the front of the path --> + <property name="launch4j.jsxe.exe" value="build/${app.name}.exe"/> <property name="build.plugin" value="${build.dir}/jars"/> <property name="build.src" value="${build.dir}/src"/> <property name="build.dest" value="${build.dir}/classes"/> <property name="build.docs" value="${build.dir}/doc"/> <property name="build.lib" value="${build.dir}/lib"/> <property name="build.bin" value="${build.dir}/bin"/> - <property name="date.format" value="MM.dd.yyyy HH:mm:ss z"/> - <property name="build.javadocs" value="${build.docs}/api"/> + <property name="build.javadocs" value="${build.dir}/api"/> <property name="build.help" value="${build.docs}/help"/> + <property name="buildlib.dir" value="${root.dir}/buildlib"/> + <property name="docbook.dir" value="${buildlib.dir}/docbook"/> + <!--<property name="app.version" value="${major.version}.${minor.version} beta"/>--> + <!--<property name="app_version" value="${major.version}_${minor.version}beta"/>--> + <property name="distbin.dir" value="${build.dir}/${app.name}-${app_version}-bin"/> + <property name="distsrc.dir" value="${build.dir}/${app.name}-${app_version}-src"/> + <property name="launch4j.dir" value="${buildlib.dir}/launch4j"/> + <property name="launch4j.config" value="${root.dir}/launch4j.xml"/> + <property name="launch4j.classpath" value="${launch4j.dir}/launch4j.jar:${launch4j.dir}/lib/xstream.jar"/> + <!-- }}} --> + <!-- {{{ installer directories --> + <property name="installer.build.dir" value="${build.dir}/installer"/> + <property name="installer.program.dir" value="${installer.build.dir}/program"/> + <property name="installer.api.dir" value="${installer.build.dir}/api"/> + <property name="installer.treeview.dir" value="${installer.build.dir}/treeview"/> + <property name="installer.sourceview.dir" value="${installer.build.dir}/sourceview"/> + <property name="installer.win.dir" value="${installer.build.dir}/win"/> + <property name="installer.gnome.dir" value="${installer.build.dir}/gnome"/> + <property name="installer.build.src" value="${installer.build.dir}/src"/> + <property name="installer.build.dest" value="${installer.build.dir}/build"/> + <property name="install.props" value="${installer.build.dest}/installer/install.props"/> + <property name="installer.dir" value="${root.dir}/installer"/> + <property name="installer.launch4j.config" value="${installer.dir}/launch4j.xml"/> + <!-- launch4j doesn't like the ./ in the front of the path --> + <property name="installer.jar" value="build/${app.name}-${app_version}-install.jar"/> + <property name="installer.exe" value="build/${app.name}-${app_version}-install.exe"/> + <!-- }}} --> + <!-- {{{ installer props --> + <property name="installer.main.class" value="installer.Install"/> + + <!-- files listed here are in the ${installer.dir} directory --> + <!-- TODO: labels should be put into a locale specific messages file --> + <property name="app.readme" value="readme.html"/> + <property name="app.license.title" value="GNU General Public License"/> + <property name="app.license" value="gpl.html"/> + <property name="ostask.unix-script.label" value="Install shortcut in:"/> + <property name="ostask.unix-man.label" value="Install manual page in:"/> + <property name="ostask.unix-desktop.label" value="Install desktop launchers in:"/> + <property name="ostask.unix-desktop.shortcut" value="jsxe.desktop"/> + <property name="ostask.unix-desktop.pixmap" value="jsxe.png"/> + + <!--<property name="ostask.unix-man.manpage" value="jsxe.1"/>--> + <property name="comp.count" value="5"/> + + <property name="comp.0.name" value="jsXe XML Editor"/> + <!-- size values are set by the filesize task in the + build-installer task --> + <!--<property name="comp.0.disk-size" value="7084"/> + <property name="comp.0.real-size" value="6073"/>--> + <property name="comp.0.fileset" value="jsxe-program"/> + <property name="installer.build.program.tar" value="${installer.build.dest}/installer/${comp.0.fileset}.tar.bz2"/> + + <property name="comp.1.name" value="Tree view (highly recommended)"/> + <!-- size values are set by the filesize task in the + build-installer task --> + <!--<property name="comp.1.disk-size" value="7084"/> + <property name="comp.1.real-size" value="6073"/>--> + <property name="comp.1.fileset" value="jsxe-treeview"/> + <property name="installer.build.treeview.tar" value="${installer.build.dest}/installer/${comp.1.fileset}.tar.bz2"/> + + <property name="comp.2.name" value="Source view (highly recommended)"/> + <!-- size values are set by the filesize task in the + build-installer task --> + <!--<property name="comp.2.disk-size" value="7084"/> + <property name="comp.2.real-size" value="6073"/>--> + <property name="comp.2.fileset" value="jsxe-sourceview"/> + <property name="installer.build.sourceview.tar" value="${installer.build.dest}/installer/${comp.2.fileset}.tar.bz2"/> + + <property name="comp.3.name" value="API documentation (for plugin development)"/> + <!-- size values are set by the filesize task in the + build-installer task --> + <!--<property name="comp.3.disk-size" value="7084"/> + <property name="comp.3.real-size" value="6073"/>--> + <property name="comp.3.fileset" value="jsxe-api"/> + <property name="installer.build.api.tar" value="${installer.build.dest}/installer/${comp.3.fileset}.tar.bz2"/> + + <property name="comp.4.name" value="Windows Integration (highly recommended)"/> + <!-- size values are set by the filesize task in the + build-installer task --> + <!--<property name="comp.4.disk-size" value="7084"/> + <property name="comp.4.real-size" value="6073"/>--> + <property name="comp.4.fileset" value="jsxe-win"/> + <property name="comp.4.os" value="Windows"/> + <property name="installer.build.win.tar" value="${installer.build.dest}/installer/${comp.4.fileset}.tar.bz2"/> + <!-- }}} --> + <!-- {{{ java build properties --> <property name="javac.debug" value="on"/> <property name="javac.optimize" value="off"/> <property name="javac.deprecation" value="on"/> <property name="javac.include.runtime" value="no"/> <property name="javac.source" value="1.3"/> + <!-- }}} --> + <!-- {{{ doc properties --> <property name="java.javadoc.link" value="http://java.sun.com/j2se/1.3/docs/api/"/> <property name="xerces.javadoc.link" value="http://xerces.apache.org/xerces2-j/javadocs/api/"/> - <property name="main.class" value="net.sourceforge.jsxe.jsXe"/> - <property name="major.version" value="0"/> - <property name="minor.version" value="5"/> - <property name="beta.version" value="3"/> - <property name="bugfix.version" value="0"/> - <!-- Human Readable --> - <property name="app.version" value="0.5 pre3"/> - <!-- Used in filenames --> - <property name="app_version" value="05_pre3"/> + <!-- }}} --> - <property name="buildlib.dir" value="${root.dir}/buildlib"/> - <property name="jsmooth.project" value="${root.dir}/jsXe.jsmooth"/> - <property name="jsmooth.jar" value="${buildlib.dir}/jsmoothgen-ant.jar"/> - - <condition property="windows.build"> - <and> - <os family="windows"/> - <available file="${jsmooth.jar}" property="jsmooth.avail"/> - </and> - </condition> - - <property name="distbin.dir" value="${build.dir}/${app.name}-${app_version}-bin"/> - <property name="distsrc.dir" value="${build.dir}/${app.name}-${app_version}-src"/> + <!-- {{{ classpaths --> <path id="classpath"> <pathelement location="."/> <pathelement location="${build.dest}"/> @@ -83,38 +171,41 @@ </path> <path id="run-classpath"> - <pathelement location="${build.dir}/${app.name}.jar"/> + <pathelement location="${jsxe.jar}"/> <fileset dir="${lib.dir}"> <include name="**/*.jar"/> </fileset> </path> + <!-- }}} --> + <!-- {{{ conditionals --> + <!-- set whether we have the source for the default views --> + + <available file="${root.dir}/../web" property="web.avail"/> + <available file="${plugin.dir}" property="plugin.avail"/> <available file="${plugin.dir}/treeview/build.xml" property="treeview.avail"/> <available file="${plugin.dir}/sourceview/build.xml" property="sourceview.avail"/> - <available file="${root.dir}/../web" property="web.avail"/> - <available file="${plugin.dir}" property="plugin.avail"/> + <available file="${launch4j.dir}" property="launch4j.avail"/> + <available classname="org.apache.bsf.BSFException" property="bsf.avail"/> + <available classname="org.mozilla.javascript.JavaScriptException" property="js.avail"/> + <available file="${installer.dir}" property="installer.avail"/> + <!-- }}} --> + + <!-- {{{ catalog used for building docs --> + <xmlcatalog id="docbook-catalog"> + <catalogpath> + <fileset dir="${docbook.dir}" includes="**/catalog.xml"/> + </catalogpath> + </xmlcatalog> + <!-- }}} --> + <echo message="${app.name} ${app.version}"/> <echo message="----------------------------------------------------------"/> </target> <!-- }}} --> - <!-- {{{ ============ Prints the available targets ===================== --> - <target depends="init" name="usage" description="Prints available targets"> - <echo message=" available targets are:"/> - <echo message=""/> - <echo message=" compile --> generates the ${app.name}.jar file."/> - <echo message=" also generates the jars for the tree view"/> - <echo message=" and source view plugins if available."/> - <echo message=" bin --> generates a binary distribution"/> - <echo message=" src --> generates a source distribution"/> - <echo message=" doc --> generates all documentation"/> - <echo message=" also updates the web api if the web module"/> - <echo message=" is available."/> - <echo message=" clean --> cleans everything up"/> - </target> - <!-- }}} --> <!-- {{{ ============ Prepares for any type of build =================== --> <target depends="init" name="prepare"> <mkdir dir="${build.dir}"/> @@ -141,8 +232,7 @@ <include name="**/*.png"/> <!-- files in the source directory to ignore --> - <!--<exclude name="net/sourceforge/jsxe/dom2/**/*"/> - <exclude name="net/sourceforge/jsxe/io/**/*"/>--> + <exclude name="net/sourceforge/jsxe/help/**/*"/> </fileset> </copy> <mkdir dir="${build.plugin}"/> @@ -174,6 +264,7 @@ <classpath refid="classpath"/> <include name="**/*.java"/> </javac> + <copy todir="${build.dest}"> <fileset dir="${build.src}"> <include name="**/*.props"/> @@ -187,6 +278,15 @@ </fileset> </copy> + <!-- copy the lib directory so that the jsXe.exe can be run + from the build dir --> + <mkdir dir="${build.lib}"/> + <copy todir="${build.lib}"> + <fileset dir="${lib.dir}"> + <include name="**/*"/> + </fileset> + </copy> + <!-- set the build properties --> <propertyfile comment="${app.name}'s build properties" file="${build.dest}/net/sourceforge/jsxe/build.properties"> <entry key="application.name" value="${app.name}"/> @@ -207,7 +307,7 @@ </section> </manifest> - <jar jarfile="${build.dir}/${app.name}.jar" manifest="${build.dir}/${app.name}.manifest"> + <jar jarfile="${jsxe.jar}" manifest="${build.dir}/${app.name}.manifest"> <fileset dir="${build.dest}"> <include name="**/*.class"/> <include name="**/properties"/> @@ -249,13 +349,6 @@ <!-- }}} --> <!-- {{{ ============ Prepares for a build ============================= --> <target depends="init" name="prepare-build"> - <!-- lib --> - <mkdir dir="${build.dir}/lib"/> - <copy todir="${build.dir}/lib"> - <fileset dir="${lib.dir}"> - <include name="**/*"/> - </fileset> - </copy> <!-- bin --> <mkdir dir="${build.dir}/bin"/> <copy todir="${build.dir}/bin"> @@ -267,6 +360,14 @@ <!-- }}} --> <!-- {{{ ============ Generates the documentation ====================== --> <target depends="prepare-doc, prepare-src" name="doc" description="Build documentation"> + <taskdef name="fop" classname="org.apache.fop.tools.anttasks.Fop"> + <classpath> + <pathelement location="${buildlib.dir}\fop.jar"/> + <pathelement location="${buildlib.dir}\avalon.jar"/> + <pathelement location="${buildlib.dir}\batik.jar"/> + </classpath> + </taskdef> + <copy file="${root.dir}/COPYING" tofile="${build.docs}/COPYING"/> <copy file="${root.dir}/README" tofile="${build.docs}/README"/> <copy file="${root.dir}/AUTHORS" tofile="${build.docs}/AUTHORS"/> @@ -276,17 +377,363 @@ <copy file="${root.dir}/THANKS" tofile="${build.docs}/THANKS"/> <copy file="${root.dir}/NEWS" tofile="${build.docs}/NEWS"/> + <!-- generate the html manual --> + <!-- + <mkdir dir="${build.docs}/manual"/> + <xslt basedir="${docs.dir}/manual" + destdir="${build.docs}/manual" + includes="**/manual.xml" + style="${docbook.dir}/html/docbook.xsl"> + <outputproperty name="encoding" value="UTF-8"/> + <mapper type="glob" from="*.xml" to="*.html"/> + <xmlcatalog refid="docbook-catalog"/> + </xslt> + --> + + <!-- generate the pdf manual --> + <!-- + <mkdir dir="${build.dir}/manual"/> + <xslt basedir="${docs.dir}/manual" + destdir="${build.dir}/manual" + includes="**/manual.xml" + style="${docbook.dir}/fo/docbook.xsl"> + <outputproperty name="encoding" value="UTF-8"/> + <mapper type="glob" from="*.xml" to="*.fo"/> + <xmlcatalog refid="docbook-catalog"/> + </xslt> + + <fop format="application/pdf" + outdir="${build.dir}" + messagelevel="warn"> + <fileset dir="${build.dir}/manual"> + <include name="*.fo"/> + </fileset> + </fop> + --> + <javadoc author="true" destdir="${build.javadocs}" doctitle="${app.name} ${app.version} API" locale="en_US" packagenames="*" sourcepath="${build.src}" version="true" windowtitle="${app.name} ${app.version} API"> <link href="${java.javadoc.link}"/> <link href="${xerces.javadoc.link}"/> - </javadoc> + </javadoc> - <zip basedir="${build.docs}" includes="api/**" zipfile="${build.dir}/${app.name}-${app_version}-api... [truncated message content] |
From: <ian...@us...> - 2006-09-05 15:47:35
|
Revision: 1234 http://svn.sourceforge.net/jsxe/?rev=1234&view=rev Author: ian_lewis Date: 2006-09-05 08:47:20 -0700 (Tue, 05 Sep 2006) Log Message: ----------- Merge from trunk/treeview of rev. 1232 Modified Paths: -------------- branches/treeview2/Changelog branches/treeview2/dependency.props branches/treeview2/src/treeview/DefaultView.java branches/treeview2/src/treeview/TreeViewPlugin.java branches/treeview2/src/treeview/TreeViewTree.java branches/treeview2/src/treeview/action/AddNodeAction.java branches/treeview2/src/treeview/action/CopyNodeAction.java branches/treeview2/src/treeview/action/CutNodeAction.java branches/treeview2/src/treeview/action/EditNodeAction.java branches/treeview2/src/treeview/action/PasteNodeAction.java branches/treeview2/src/treeview/treeview.props Added Paths: ----------- branches/treeview2/messages/messages.properties branches/treeview2/messages/messages_de.properties branches/treeview2/messages/messages_ja.properties branches/treeview2/messages/messages_ru.properties branches/treeview2/messages/messages_sv.properties Removed Paths: ------------- branches/treeview2/messages/messages branches/treeview2/messages/messages.de branches/treeview2/messages/messages.ja branches/treeview2/messages/messages.sv Modified: branches/treeview2/Changelog =================================================================== --- branches/treeview2/Changelog 2006-09-05 15:46:47 UTC (rev 1233) +++ branches/treeview2/Changelog 2006-09-05 15:47:20 UTC (rev 1234) @@ -1,3 +1,34 @@ +08/31/2006 Ian Lewis <Ian...@me...> + + * Updated the sourceview actions to use the new ContextSpecificActions in + jsXe. + +08/30/2006 Ian Lewis <Ian...@me...> + + * Fixed null pointer exception when trying to cut a node that can't be + cut. + +08/29/2006 Ian Lewis <Ian...@me...> + + * Updated japanese translation + +08/21/2006 Ian Lewis <Ian...@me...> + + * Updated russian translation. + +08/08/2006 Ian Lewis <Ian...@me...> + + * Fixed undo when adding/editing a node that is specified in a DTD/Schema. + +08/07/2006 Ian Lewis <Ian...@me...> + + * The Edit menu has been moved to jsXe core. + +08/03/2006 Ian Lewis <Ian...@me...> + + * Added some English tooltip messages to the Global Options Pane for the + tree view. + 07/20/2006 Ian Lewis <Ian...@me...> * Updated actions and messages for options. Modified: branches/treeview2/dependency.props =================================================================== --- branches/treeview2/dependency.props 2006-09-05 15:46:47 UTC (rev 1233) +++ branches/treeview2/dependency.props 2006-09-05 15:47:20 UTC (rev 1234) @@ -1 +1 @@ -dependency.0=jsxe 00.05.03.00 +dependency.0=jsxe 00.05.04.00 Deleted: branches/treeview2/messages/messages =================================================================== --- branches/treeview2/messages/messages 2006-09-05 15:46:47 UTC (rev 1233) +++ branches/treeview2/messages/messages 2006-09-05 15:47:20 UTC (rev 1234) @@ -1,30 +0,0 @@ -# JSXE tree view English properties file -# $Id$ -#:mode=properties: -#:tabSize=4:indentSize=4:noTabs=true: -#:folding=explicit:collapseFolds=1: - -TreeView.Options.Title=Tree View - -TreeView.Options.Show.Comments=Show comment nodes -TreeView.Options.Continuous.Layout=Continuous layout for split-panes -TreeView.Options.Show.Attributes=Show element attributes in tree: -Show.Attributes.None=None -Show.Attributes.ID.Only=ID only -Show.Attributes.All=All - - -treeview.rename.node.label=Rename Node -treeview.remove.node.label=Remove Node -treeview.add.attribute.label=Add Attribute -treeview.remove.attribute.label=Remove Attribute -treeview.edit.node.label=Edit Node -TreeView.EditDocType.Title=Edit Document Type Definition -Edit.Node.Dialog.Title=Edit Node - -treeview.add.doctype.node.label=Add Document Type Definition -treeview.add.element.node.label=Add Element Node -treeview.add.text.node.label=Add Text Node -treeview.add.cdata.node.label=Add CDATA Node -treeview.add.pi.node.label=Add Processing Instruction -treeview.add.comment.node.label=Add Comment Deleted: branches/treeview2/messages/messages.de =================================================================== --- branches/treeview2/messages/messages.de 2006-09-05 15:46:47 UTC (rev 1233) +++ branches/treeview2/messages/messages.de 2006-09-05 15:47:20 UTC (rev 1234) @@ -1,22 +0,0 @@ -# JSXE tree view German properties file -# $Id$ -# Maintained by Bianca Shöen -#:mode=properties: -#:tabSize=4:indentSize=4:noTabs=true: -#:folding=explicit:collapseFolds=1: - -# ä Ä é ö Ö ü Ü ß - -TreeView.Options.Title=Tree View Optionen -TreeView.Options.Show.Comments=Kommentar Knoten anzeigen -TreeView.Options.Show.Comments.ToolTip=Beim Deaktivieren werden sämtliche Kommentare in der momentan geöffneten XML Datei ausgeblendet. -TreeView.Options.Continuous.Layout=Durchgängiges Layout für split-panes -TreeView.Options.Continuous.Layout.ToolTip=<HTML>Dies beeinflusst das Aussehen des vertikalen Balkens in der Mitte des jsXE Screens.<BR>Ist dieses Auswahlkästchen nicht ausgewählt während der vertikale Balken vor und zurück über den Screen <BR>gezogen wird, bewegt er sich ohne Umstände.<BR>Ist dieses Auswahlkästchen nicht aktiviert während der vertikale Balken verschoben wird, verändert er sich in <BR>eine dicke schwarze Linie.</HTML> -TreeView.Options.Show.Attributes=Show element attributes in tree: -TreeView.Options.Show.Attributes.ToolTip=<HTML>Diese Option verlaubt es, die XML Datei auf verschiedene Arten anzuzeigen. <ul><li><strong>Keine</strong> - blendet alle Attribut-Informationen der Datei aus. </li><li><strong>Nur ID</strong> - nur Attribut-Informationen, die zu einem XML Element mit ID gehören, werden angezeigt.</li><li><strong>Alle</strong> - alle Attribut-Informationen werden angezeigt.</li></ul><HTML> -TreeView.RenameNode=Knoten umbenennen -TreeView.RemoveNode=Knoten entfernen -TreeView.AddAttribute=Attribut hinzufügen -TreeView.RemoveAttribute=Attribut entfernen -TreeView.EditNode=Knoten bearbeiten -Edit.Node.Dialog.Title=Knoten bearbeitenn Deleted: branches/treeview2/messages/messages.ja =================================================================== --- branches/treeview2/messages/messages.ja 2006-09-05 15:46:47 UTC (rev 1233) +++ branches/treeview2/messages/messages.ja 2006-09-05 15:47:20 UTC (rev 1234) @@ -1,29 +0,0 @@ -# JSXE tree view Japanese properties file -# $Id$ -# Maintained by Ian Lewis -#:mode=properties: -#:tabSize=4:indentSize=4:noTabs=true: -#:folding=explicit:collapseFolds=1: - -TreeView.Options.Title=ツリー表示 - -TreeView.Options.Show.Comments=コメントノードを表示する -TreeView.Options.Show.Attributes=要素の属性を表示する: -Show.Attributes.None=なし -Show.Attributes.ID.Only=IDだけ -Show.Attributes.All=全て - -treeview.rename.node.label=ノードをリネーム -treeview.remove.node.label=ノードを削除 -treeview.add.attribute.label=属性を追加 -treeview.remove.attribute.label=属性を削除 -treeview.add.doctype.node.label=DTDを追加 -treeview.edit.node.label=ノードを編集 -TreeView.EditDocType.Title=DTDを編集 -Edit.Node.Dialog.Title=ノードを編集 - -treeview.add.element.node.label=要素を追加 -treeview.add.text.node.label=テキストを追加 -treeview.add.cdata.node.label=CDATA セクションを追加 -treeview.add.pi.node.label=処理命令を追加 -treeview.add.comment.node.label=コメントを追加 Copied: branches/treeview2/messages/messages.properties (from rev 1232, trunk/treeview/messages/messages.properties) =================================================================== --- branches/treeview2/messages/messages.properties (rev 0) +++ branches/treeview2/messages/messages.properties 2006-09-05 15:47:20 UTC (rev 1234) @@ -0,0 +1,34 @@ +# JSXE tree view English properties file +# $Id$ +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1: + +TreeView.Options.Title=Tree View + +TreeView.Options.Show.Comments=Show comment nodes +TreeView.Options.Show.Comments.ToolTip=If this checkbox is checked then comment nodes will be shown in the tree. +TreeView.Options.Continuous.Layout=Continuous layout for split-panes +TreeView.Options.Continuous.Layout.ToolTip=<html>If this checkbox is checked then split panes will continuously repaint as you resize them.<br>Otherwise a black line is drawn to show the resize.</html> +TreeView.Options.Show.Attributes=Show element attributes in tree: +TreeView.Options.Show.Attributes.ToolTip=<html>This option specifies what attributes are shown in the tree.<ul><li><strong>None</strong> - No attrributes are shown.</li><li><strong>ID only</strong> - Only the attribute specified as the ID is shown.</li><li><strong>All</strong> - All attributes are shown.</li></ul></html> +Show.Attributes.None=None +Show.Attributes.ID.Only=ID only +Show.Attributes.All=All + +treeview.document.root=Document Root + +treeview.rename.node.label=Rename Node +treeview.remove.node.label=Remove Node +treeview.add.attribute.label=Add Attribute +treeview.remove.attribute.label=Remove Attribute +treeview.edit.node.label=Edit Node +TreeView.EditDocType.Title=Edit Document Type Definition +Edit.Node.Dialog.Title=Edit Node + +treeview.add.doctype.node.label=Add Document Type Definition +treeview.add.element.node.label=Add Element Node +treeview.add.text.node.label=Add Text Node +treeview.add.cdata.node.label=Add CDATA Node +treeview.add.pi.node.label=Add Processing Instruction +treeview.add.comment.node.label=Add Comment Deleted: branches/treeview2/messages/messages.sv =================================================================== --- branches/treeview2/messages/messages.sv 2006-09-05 15:46:47 UTC (rev 1233) +++ branches/treeview2/messages/messages.sv 2006-09-05 15:47:20 UTC (rev 1234) @@ -1,12 +0,0 @@ -# JSXE tree view Swedish properties file -# $Id$ -# Currently maintained by Patrik Johansson <pa...@it...> -#:mode=properties: -#:tabSize=4:indentSize=4:noTabs=true: -#:folding=explicit:collapseFolds=1: - -TreeView.RenameNode=Ta bort nod -TreeView.RemoveNode=Ta bort nod -TreeView.AddAttribute=Lägg till attribut -TreeView.RemoveAttribute=Ta bort attribut -TreeView.EditNode=Redigera nod Copied: branches/treeview2/messages/messages_de.properties (from rev 1232, trunk/treeview/messages/messages_de.properties) =================================================================== --- branches/treeview2/messages/messages_de.properties (rev 0) +++ branches/treeview2/messages/messages_de.properties 2006-09-05 15:47:20 UTC (rev 1234) @@ -0,0 +1,22 @@ +# JSXE tree view German properties file +# $Id$ +# Maintained by Bianca Shöen +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1: + +# ä Ä é ö Ö ü Ü ß + +TreeView.Options.Title=Tree View Optionen +TreeView.Options.Show.Comments=Kommentar Knoten anzeigen +TreeView.Options.Show.Comments.ToolTip=Beim Deaktivieren werden sämtliche Kommentare in der momentan geöffneten XML Datei ausgeblendet. +TreeView.Options.Continuous.Layout=Durchgängiges Layout für split-panes +TreeView.Options.Continuous.Layout.ToolTip=<HTML>Dies beeinflusst das Aussehen des vertikalen Balkens in der Mitte des jsXE Screens.<BR>Ist dieses Auswahlkästchen nicht ausgewählt während der vertikale Balken vor und zurück über den Screen <BR>gezogen wird, bewegt er sich ohne Umstände.<BR>Ist dieses Auswahlkästchen nicht aktiviert während der vertikale Balken verschoben wird, verändert er sich in <BR>eine dicke schwarze Linie.</HTML> +TreeView.Options.Show.Attributes=Show element attributes in tree: +TreeView.Options.Show.Attributes.ToolTip=<HTML>Diese Option verlaubt es, die XML Datei auf verschiedene Arten anzuzeigen. <ul><li><strong>Keine</strong> - blendet alle Attribut-Informationen der Datei aus. </li><li><strong>Nur ID</strong> - nur Attribut-Informationen, die zu einem XML Element mit ID gehören, werden angezeigt.</li><li><strong>Alle</strong> - alle Attribut-Informationen werden angezeigt.</li></ul><HTML> +TreeView.RenameNode=Knoten umbenennen +TreeView.RemoveNode=Knoten entfernen +TreeView.AddAttribute=Attribut hinzufügen +TreeView.RemoveAttribute=Attribut entfernen +TreeView.EditNode=Knoten bearbeiten +Edit.Node.Dialog.Title=Knoten bearbeitenn Copied: branches/treeview2/messages/messages_ja.properties (from rev 1232, trunk/treeview/messages/messages_ja.properties) =================================================================== --- branches/treeview2/messages/messages_ja.properties (rev 0) +++ branches/treeview2/messages/messages_ja.properties 2006-09-05 15:47:20 UTC (rev 1234) @@ -0,0 +1,31 @@ +# JSXE tree view Japanese properties file +# $Id$ +# Maintained by Ian Lewis +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1: + +TreeView.Options.Title=ツリー表示 + +TreeView.Options.Show.Comments=コメントノードを表示する +TreeView.Options.Show.Attributes=要素の属性を表示する: +Show.Attributes.None=なし +Show.Attributes.ID.Only=IDだけ +Show.Attributes.All=全て + +treeview.document.root=ドキュメントルート + +treeview.rename.node.label=ノードをリネーム +treeview.remove.node.label=ノードを削除 +treeview.add.attribute.label=属性を追加 +treeview.remove.attribute.label=属性を削除 +treeview.add.doctype.node.label=DTDを追加 +treeview.edit.node.label=ノードを編集 +TreeView.EditDocType.Title=DTDを編集 +Edit.Node.Dialog.Title=ノードを編集 + +treeview.add.element.node.label=要素を追加 +treeview.add.text.node.label=テキストを追加 +treeview.add.cdata.node.label=CDATA セクションを追加 +treeview.add.pi.node.label=処理命令を追加 +treeview.add.comment.node.label=コメントを追加 Copied: branches/treeview2/messages/messages_ru.properties (from rev 1232, trunk/treeview/messages/messages_ru.properties) =================================================================== --- branches/treeview2/messages/messages_ru.properties (rev 0) +++ branches/treeview2/messages/messages_ru.properties 2006-09-05 15:47:20 UTC (rev 1234) @@ -0,0 +1,35 @@ +# JSXE tree view English properties file +# $Id: messages 1101 2006-08-03 15:40:34Z ian_lewis $ +# Maintained by Alexandr Gridnev (ale...@ya...) +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1: + +TreeView.Options.Title=Отображение деревом + +TreeView.Options.Show.Comments=Показывать узлы-комментарии +TreeView.Options.Show.Comments.ToolTip=Если это выбрано - то узлы-комментарии будут отображаться в дереве +TreeView.Options.Continuous.Layout=При движении разделителей - сразу перерисовывать +TreeView.Options.Continuous.Layout.ToolTip=<html>Если выбрано - то при перемещении разделителей то что они разделяют будет сразу перерисовываться.<br>Если не выбрано - то положение линии будет отображаться черной полоской, а перерисовано все будет после того как вы отпустите мышару.</html> +TreeView.Options.Show.Attributes=Показывать элементы атрибутов в дереве: +TreeView.Options.Show.Attributes.ToolTip=<html>Эта опция определяет какие атрибуты элементов будут отображены в дереве.<ul><li><strong>Никаких</strong> - Атрибутов не покажут.</li><li><strong>только ID </strong> - Покажут только атрибут, определенный как ID.</li><li><strong>Все</strong> - Покажут все что есть.</li></ul></html> +Show.Attributes.None=Никаких +Show.Attributes.ID.Only=Только ID +Show.Attributes.All=Все + +treeview.document.root=Это корень документа + +treeview.rename.node.label=Переименовать узел +treeview.remove.node.label=Удалить узел +treeview.add.attribute.label=Добавить атрибут +treeview.remove.attribute.label=Удалить атрибут +treeview.edit.node.label=Редактировать узел +TreeView.EditDocType.Title=Редактировать определение типа документа (DTD) +Edit.Node.Dialog.Title=Редактирование узла + +treeview.add.doctype.node.label=Добавить определение типа документа (DTD) +treeview.add.element.node.label=Добавить узел-элемент +treeview.add.text.node.label=Добавить узел-текст +treeview.add.cdata.node.label=Добавиь узел-CDATA +treeview.add.pi.node.label=Добавить правило обработки +treeview.add.comment.node.label=Добавить комментарий Copied: branches/treeview2/messages/messages_sv.properties (from rev 1232, trunk/treeview/messages/messages_sv.properties) =================================================================== --- branches/treeview2/messages/messages_sv.properties (rev 0) +++ branches/treeview2/messages/messages_sv.properties 2006-09-05 15:47:20 UTC (rev 1234) @@ -0,0 +1,12 @@ +# JSXE tree view Swedish properties file +# $Id$ +# Currently maintained by Patrik Johansson <pa...@it...> +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1: + +TreeView.RenameNode=Ta bort nod +TreeView.RemoveNode=Ta bort nod +TreeView.AddAttribute=Lägg till attribut +TreeView.RemoveAttribute=Ta bort attribut +TreeView.EditNode=Redigera nod Modified: branches/treeview2/src/treeview/DefaultView.java =================================================================== --- branches/treeview2/src/treeview/DefaultView.java 2006-09-05 15:46:47 UTC (rev 1233) +++ branches/treeview2/src/treeview/DefaultView.java 2006-09-05 15:47:20 UTC (rev 1234) @@ -32,10 +32,14 @@ import net.sourceforge.jsxe.dom.*; import net.sourceforge.jsxe.dom.completion.ElementDecl; import net.sourceforge.jsxe.*; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.gui.Messages; +import net.sourceforge.jsxe.gui.TabbedView; import net.sourceforge.jsxe.util.Log; import net.sourceforge.jsxe.msg.PropertyChanged; +import net.sourceforge.jsxe.msg.UndoEvent; +import net.sourceforge.jsxe.msg.RedoEvent; //}}} //{{{ Swing components @@ -118,6 +122,7 @@ m_valueTextArea.setFont(new Font("Monospaced", 0, 12)); m_valueTextArea.setLineWrap(false); JScrollPane htmlView = new JScrollPane(m_valueTextArea); + //}}} //{{{ init attributes table @@ -136,6 +141,11 @@ JScrollPane treeView = new JScrollPane(tree); tree.addTreeSelectionListener(new DefaultTreeSelectionListener(this)); + //add context specific actions for the tree. + ActionManager.addActionImplementation("cut", tree, new CutNodeAction()); + ActionManager.addActionImplementation("copy", tree, new CopyNodeAction()); + ActionManager.addActionImplementation("paste", tree, new PasteNodeAction()); + //starts editing if the user start typing on one of the nodes //seems to catch user shortcuts too. Not sure how to resolve that. @@ -163,19 +173,6 @@ // });//}}} //}}} - //{{{ Construct Edit Menu - //TODO: get the keyboard shortcuts to work, - //TODO: get cut/copy/paste to work in the right hand text window - m_editMenu = new JMenu(Messages.getMessage("Edit.Menu")); - m_editMenu.setMnemonic('E'); - JMenuItem menuItem = new JMenuItem(ActionManager.getAction("cut")); - m_editMenu.add(menuItem); - menuItem = new JMenuItem(ActionManager.getAction("copy")); - m_editMenu.add(menuItem); - menuItem = new JMenuItem(ActionManager.getAction("paste")); - m_editMenu.add(menuItem); - //}}} - //{{{ Create and set up the splitpanes vertSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, treeView, attrView); vertSplitPane.setContinuousLayout(false); @@ -244,6 +241,10 @@ } } + ActionManager.removeActionImplementation("cut", tree); + ActionManager.removeActionImplementation("copy", tree); + ActionManager.removeActionImplementation("paste", tree); + EditBus.removeFromBus(this); return true; @@ -264,7 +265,7 @@ //{{{ getMenus() public JMenu[] getMenus() { - return new JMenu[] { m_editMenu }; + return null; }//}}} //{{{ getDocumentBuffer() @@ -342,6 +343,11 @@ if (CONTINUOUS_LAYOUT.equals(key) || SHOW_COMMENTS.equals(key) || SHOW_ATTRIBUTES.equals(key)) { tree.updateUI(); } + } else { + if ((message instanceof UndoEvent) || (message instanceof RedoEvent)) { + //hack to get undo to work properly + m_valueTextArea.setDocument(new DefaultViewDocument(tree.getSelectedNode())); + } } }//}}} @@ -531,7 +537,6 @@ private DocumentBuffer m_document; private boolean m_viewShown = false; private TreeViewPlugin m_plugin; - private JMenu m_editMenu; private EditTagDialog.ComboValueRenderer m_comboRenderer = new EditTagDialog.ComboValueRenderer(); Modified: branches/treeview2/src/treeview/TreeViewPlugin.java =================================================================== --- branches/treeview2/src/treeview/TreeViewPlugin.java 2006-09-05 15:46:47 UTC (rev 1233) +++ branches/treeview2/src/treeview/TreeViewPlugin.java 2006-09-05 15:47:20 UTC (rev 1234) @@ -63,9 +63,6 @@ addAction(new RemoveAttributeAction()); addAction(new EditNodeAction()); addAction(new AddDocTypeAction()); - addAction(new CutNodeAction()); - addAction(new CopyNodeAction()); - addAction(new PasteNodeAction()); }//}}} //{{{ newDocumentView() Modified: branches/treeview2/src/treeview/TreeViewTree.java =================================================================== --- branches/treeview2/src/treeview/TreeViewTree.java 2006-09-05 15:46:47 UTC (rev 1233) +++ branches/treeview2/src/treeview/TreeViewTree.java 2006-09-05 15:47:20 UTC (rev 1234) @@ -196,8 +196,8 @@ Clipboard clipBoard = getToolkit().getSystemClipboard(); if (selectedNode != null) { try { - clipBoard.setContents(new TransferableNode(selectedNode), this); selectedNode.getParentNode().remove(selectedNode); + clipBoard.setContents(new TransferableNode(selectedNode), this); updateUI(); return true; } catch (IllegalStateException e) { @@ -205,7 +205,6 @@ } catch (HeadlessException e) { Log.log(Log.ERROR, this, e); } catch (DOMException e) { - clipBoard.setContents(null, this); throw e; } } @@ -376,7 +375,7 @@ private static String toString(AdapterNode node) { StringBuffer s = new StringBuffer(); if (node.getNodeType() == Node.DOCUMENT_NODE) - return "Document Root"; + return Messages.getMessage("treeview.document.root"); String nodeName = node.getNodeName(); if (! nodeName.startsWith("#")) { s.append(nodeName); @@ -451,8 +450,8 @@ if (selectedNode.getNodeType() == Node.ELEMENT_NODE) { - JMenu addElement = new WrappingMenu(Messages.getMessage("xml.element"), 20); - addNodeItem.add(addElement); + WrappingMenu addElement = new WrappingMenu(Messages.getMessage("xml.element"), 20); + addNodeItem.add(addElement.getJMenu()); addElement.add(ActionManager.getAction("treeview.add.element.node")); Iterator allowedElements = selectedNode.getAllowedElements().iterator(); @@ -463,8 +462,8 @@ //Add the allowed entities even if no matter what - JMenu addEntity = new WrappingMenu(Messages.getMessage("xml.entity.reference"), 20); - addNodeItem.add(addEntity); + WrappingMenu addEntity = new WrappingMenu(Messages.getMessage("xml.entity.reference"), 20); + addNodeItem.add(addEntity.getJMenu()); Iterator allowedEntities = ownerDocument.getAllowedEntities().iterator(); while (allowedEntities.hasNext()) { @@ -685,48 +684,48 @@ }//}}} - //{{{ ElementTreeCellRenderer class + // //{{{ ElementTreeCellRenderer class - private class ElementTreeCellRenderer extends DefaultTreeCellRenderer { + // private class ElementTreeCellRenderer extends DefaultTreeCellRenderer { - //{{{ ElementTreeCellRenderer constructor + // //{{{ ElementTreeCellRenderer constructor - public ElementTreeCellRenderer() { - m_defaultLeafIcon = getLeafIcon(); - }//}}} + // public ElementTreeCellRenderer() { + // m_defaultLeafIcon = getLeafIcon(); + // }//}}} - //{{{ getTreeCellRendererComponent + // //{{{ getTreeCellRendererComponent - public Component getTreeCellRendererComponent(JTree tree, - Object value, boolean selected, boolean expanded, - boolean leaf, int row, boolean hasFocus) - { - AdapterNode node = (AdapterNode)value; + // public Component getTreeCellRendererComponent(JTree tree, + // Object value, boolean selected, boolean expanded, + // boolean leaf, int row, boolean hasFocus) + // { + // AdapterNode node = (AdapterNode)value; - // We can rename processing instruction nodes here too. - if (node.getNodeType() == AdapterNode.PROCESSING_INSTRUCTION_NODE) { - setIcon(m_defaultLeafIcon); - setLeafIcon(m_defaultLeafIcon); - setOpenIcon(m_defaultLeafIcon); - setClosedIcon(m_defaultLeafIcon); - setToolTipText(Messages.getMessage("xml.processing.instruction")); - } else { - setIcon(m_elementIcon); - setLeafIcon(m_elementIcon); - setOpenIcon(m_elementIcon); - setClosedIcon(m_elementIcon); - setToolTipText(Messages.getMessage("xml.element")); - } + // // We can rename processing instruction nodes here too. + // if (node.getNodeType() == AdapterNode.PROCESSING_INSTRUCTION_NODE) { + // setIcon(m_defaultLeafIcon); + // setLeafIcon(m_defaultLeafIcon); + // setOpenIcon(m_defaultLeafIcon); + // setClosedIcon(m_defaultLeafIcon); + // setToolTipText(Messages.getMessage("xml.processing.instruction")); + // } else { + // setIcon(m_elementIcon); + // setLeafIcon(m_elementIcon); + // setOpenIcon(m_elementIcon); + // setClosedIcon(m_elementIcon); + // setToolTipText(Messages.getMessage("xml.element")); + // } - //just use the node name, we don't want attributes and such. - setText(((AdapterNode)value).getNodeName()); - return this; + // //just use the node name, we don't want attributes and such. + // setText(((AdapterNode)value).getNodeName()); + // return this; - }//}}} + // }//}}} - private Icon m_defaultLeafIcon; + // private Icon m_defaultLeafIcon; - }//}}} + // }//}}} //{{{ ElementCellEditor class Modified: branches/treeview2/src/treeview/action/AddNodeAction.java =================================================================== --- branches/treeview2/src/treeview/action/AddNodeAction.java 2006-09-05 15:46:47 UTC (rev 1233) +++ branches/treeview2/src/treeview/action/AddNodeAction.java 2006-09-05 15:47:20 UTC (rev 1234) @@ -52,6 +52,7 @@ import net.sourceforge.jsxe.LocalizedAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.gui.TabbedView; +import net.sourceforge.jsxe.dom.XMLDocument; import net.sourceforge.jsxe.dom.AdapterNode; import net.sourceforge.jsxe.dom.completion.ElementDecl; import net.sourceforge.jsxe.dom.completion.EntityDecl; @@ -116,27 +117,42 @@ AdapterNode addedNode = null; if (selectedNode != null) { try { + boolean isOk = true; if (m_element != null) { - if (m_element.getAttributes().size() > 0) { - EditTagDialog dialog = new EditTagDialog(jsXe.getActiveView(), - m_element, - new HashMap(), - m_element.empty, - m_element.completionInfo.getEntityHash(), - new ArrayList(), //don't support IDs for now. - selectedNode.getOwnerDocument()); - dialog.show(); - addedNode = selectedNode.addAdapterNode(dialog.getNewNode()); - } else { - addedNode = selectedNode.addAdapterNode(m_element.name, null, AdapterNode.ELEMENT_NODE, selectedNode.childCount()); + XMLDocument document = selectedNode.getOwnerDocument(); + try { + document.beginCompoundEdit(); + if (m_element.getAttributes().size() > 0) { + EditTagDialog dialog = new EditTagDialog(jsXe.getActiveView(), + m_element, + new HashMap(), + m_element.empty, + m_element.completionInfo.getEntityHash(), + new ArrayList(), //don't support IDs for now. + document); + dialog.show(); + isOk = (dialog.getNewNode() != null); + if (isOk) { + addedNode = selectedNode.addAdapterNode(dialog.getNewNode()); + } + } else { + addedNode = selectedNode.addAdapterNode(m_element.name, null, AdapterNode.ELEMENT_NODE, selectedNode.childCount()); + } + } finally { + document.endCompoundEdit(); } } else { //add the node of the correct type to the end of the children of this node addedNode = selectedNode.addAdapterNode(m_name, m_value, m_nodeType, selectedNode.childCount()); } - tree.expandPath(tree.getLeadSelectionPath()); - //The TreeModel doesn't automatically call treeNodesInserted() yet - tree.updateUI(); + + //if we hit cancel in the dialog we don't want to do this. + if (isOk) { + tree.expandPath(tree.getLeadSelectionPath()); + //The TreeModel doesn't automatically call treeNodesInserted() yet + tree.updateUI(); + } + } catch (DOMException dome) { JOptionPane.showMessageDialog(tree, dome, "XML Error", JOptionPane.WARNING_MESSAGE); Modified: branches/treeview2/src/treeview/action/CopyNodeAction.java =================================================================== --- branches/treeview2/src/treeview/action/CopyNodeAction.java 2006-09-05 15:46:47 UTC (rev 1233) +++ branches/treeview2/src/treeview/action/CopyNodeAction.java 2006-09-05 15:47:20 UTC (rev 1234) @@ -29,10 +29,8 @@ import treeview.*; //{{{ AWT classes -import java.awt.datatransfer.Clipboard; import java.awt.event.ActionEvent; -import java.awt.Toolkit; -import java.awt.HeadlessException; +import java.awt.Component; //}}} //{{{ Swing classes @@ -43,7 +41,7 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.TabbedView; @@ -60,24 +58,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class CopyNodeAction extends LocalizedAction { +public class CopyNodeAction implements ContextSpecificAction.ActionImplementation { - //{{{ CopyNodeAction constructor - /** - * Creates a action that copies the current node out of the tree and into - * the clipboard. - */ - public CopyNodeAction() { - super(TreeViewPlugin.PLUGIN_NAME+".copy"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.copy"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof DefaultView) { DefaultView defView = (DefaultView)docView; Modified: branches/treeview2/src/treeview/action/CutNodeAction.java =================================================================== --- branches/treeview2/src/treeview/action/CutNodeAction.java 2006-09-05 15:46:47 UTC (rev 1233) +++ branches/treeview2/src/treeview/action/CutNodeAction.java 2006-09-05 15:47:20 UTC (rev 1234) @@ -29,10 +29,8 @@ import treeview.*; //{{{ AWT classes -import java.awt.datatransfer.Clipboard; import java.awt.event.ActionEvent; -import java.awt.Toolkit; -import java.awt.HeadlessException; +import java.awt.Component; //}}} //{{{ Swing classes @@ -48,10 +46,11 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.TabbedView; +import net.sourceforge.jsxe.gui.GUIUtilities; import net.sourceforge.jsxe.dom.AdapterNode; import net.sourceforge.jsxe.util.Log; //}}} @@ -65,25 +64,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class CutNodeAction extends LocalizedAction { +public class CutNodeAction implements ContextSpecificAction.ActionImplementation { - //{{{ CutNodeAction constructor - /** - * Creates a action that cuts the current node out of the tree and into - * the clipboard. - */ - public CutNodeAction() { - super(TreeViewPlugin.PLUGIN_NAME+".cut"); - // putValue(Action.ACCELERATOR_KEY,KeyStroke.getKeyStroke("ctrl X")); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.cut"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof DefaultView) { DefaultView defView = (DefaultView)docView; @@ -91,7 +75,7 @@ try { tree.cut(); } catch (DOMException dome) { - JOptionPane.showMessageDialog(tree, dome, "XML Error", JOptionPane.WARNING_MESSAGE); + GUIUtilities.error(tree, "XML.Error", new Object[] { dome }); } } }//}}} Modified: branches/treeview2/src/treeview/action/EditNodeAction.java =================================================================== --- branches/treeview2/src/treeview/action/EditNodeAction.java 2006-09-05 15:46:47 UTC (rev 1233) +++ branches/treeview2/src/treeview/action/EditNodeAction.java 2006-09-05 15:47:20 UTC (rev 1234) @@ -54,6 +54,7 @@ import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.TabbedView; import net.sourceforge.jsxe.dom.AdapterNode; +import net.sourceforge.jsxe.dom.XMLDocument; import net.sourceforge.jsxe.dom.completion.ElementDecl; //}}} @@ -86,18 +87,24 @@ AdapterNode addedNode = null; if (selectedNode != null && selectedNode.getNodeType() == AdapterNode.ELEMENT_NODE) { try { - ElementDecl element = selectedNode.getOwnerDocument().getElementDecl(selectedNode.getNodeName()); + XMLDocument document = selectedNode.getOwnerDocument(); + ElementDecl element = document.getElementDecl(selectedNode.getNodeName()); if (element != null) { - //Edit tag dialog needs to be reworked - EditTagDialog dialog = new EditTagDialog(jsXe.getActiveView(), - element, - new HashMap(), - element.empty, - element.completionInfo.getEntityHash(), - new ArrayList(), //don't support IDs for now. - selectedNode.getOwnerDocument(), - selectedNode); - dialog.show(); + + try { + document.beginCompoundEdit(); + EditTagDialog dialog = new EditTagDialog(jsXe.getActiveView(), + element, + new HashMap(), + element.empty, + element.completionInfo.getEntityHash(), + new ArrayList(), //don't support IDs for now. + selectedNode.getOwnerDocument(), + selectedNode); + dialog.show(); + } finally { + document.endCompoundEdit(); + } //The TreeModel doesn't automatically call treeNodesInserted() yet tree.updateUI(); } Modified: branches/treeview2/src/treeview/action/PasteNodeAction.java =================================================================== --- branches/treeview2/src/treeview/action/PasteNodeAction.java 2006-09-05 15:46:47 UTC (rev 1233) +++ branches/treeview2/src/treeview/action/PasteNodeAction.java 2006-09-05 15:47:20 UTC (rev 1234) @@ -29,10 +29,8 @@ import treeview.*; //{{{ AWT classes -import java.awt.datatransfer.Clipboard; import java.awt.event.ActionEvent; -import java.awt.Toolkit; -import java.awt.HeadlessException; +import java.awt.Component; //}}} //{{{ Swing classes @@ -48,7 +46,7 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.TabbedView; @@ -65,24 +63,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class PasteNodeAction extends LocalizedAction { +public class PasteNodeAction implements ContextSpecificAction.ActionImplementation { - //{{{ PasteNodeAction constructor - /** - * Creates an action that pastes the node in the clipboard to the currently - * selected node in the tree. - */ - public PasteNodeAction() { - super(TreeViewPlugin.PLUGIN_NAME+".paste"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.paste"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof DefaultView) { DefaultView defView = (DefaultView)docView; Modified: branches/treeview2/src/treeview/treeview.props =================================================================== --- branches/treeview2/src/treeview/treeview.props 2006-09-05 15:46:47 UTC (rev 1233) +++ branches/treeview2/src/treeview/treeview.props 2006-09-05 15:47:20 UTC (rev 1234) @@ -15,7 +15,7 @@ # a percentage of the horizontal size of the parent container treeview.splitpane.horiz.loc=40 -treeview.show.attributes=ID only +treeview.show.attributes=1 #default size for edit doc type dialog treeview.editdoctypenode.width=200 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-05 15:47:08
|
Revision: 1233 http://svn.sourceforge.net/jsxe/?rev=1233&view=rev Author: ian_lewis Date: 2006-09-05 08:46:47 -0700 (Tue, 05 Sep 2006) Log Message: ----------- Merge from trunk/sourceview of rev. 1232 ' Modified Paths: -------------- branches/sourceview2/Changelog branches/sourceview2/src/sourceview/SourceView.java branches/sourceview2/src/sourceview/SourceViewDocument.java branches/sourceview2/src/sourceview/SourceViewPlugin.java branches/sourceview2/src/sourceview/action/EditCopyAction.java branches/sourceview2/src/sourceview/action/EditCutAction.java branches/sourceview2/src/sourceview/action/EditFindAction.java branches/sourceview2/src/sourceview/action/EditFindNextAction.java branches/sourceview2/src/sourceview/action/EditPasteAction.java Added Paths: ----------- branches/sourceview2/messages/messages.properties branches/sourceview2/messages/messages_de.properties branches/sourceview2/messages/messages_en_GB.properties branches/sourceview2/messages/messages_ja.properties branches/sourceview2/messages/messages_ru.properties branches/sourceview2/messages/messages_sv.properties Removed Paths: ------------- branches/sourceview2/messages/messages branches/sourceview2/messages/messages.de branches/sourceview2/messages/messages.en_GB branches/sourceview2/messages/messages.ja branches/sourceview2/messages/messages.sv Modified: branches/sourceview2/Changelog =================================================================== --- branches/sourceview2/Changelog 2006-09-02 19:23:16 UTC (rev 1232) +++ branches/sourceview2/Changelog 2006-09-05 15:46:47 UTC (rev 1233) @@ -1,3 +1,22 @@ +08/31/2006 Ian Lewis <Ian...@me...> + + * Updated the sourceview actions to use the new ContextSpecificActions in + jsXe. + +08/22/2006 Ian Lewis <Ian...@me...> + + * Changing the encoding now updates the SourceViewDocument so that it + doesn't cause the SourceViewDocument to get out of sync with the + XMLDocument. + +08/21/2006 Ian Lewis <Ian...@me...> + + * Updated russian translation. + +08/07/2006 Ian Lewis <Ian...@me...> + + * Moved the edit menu to jsXe core and added a hack so that undo will work. + 07/26/2006 Ian Lewis <Ian...@me...> * Addded support for the findnext action Deleted: branches/sourceview2/messages/messages =================================================================== --- branches/sourceview2/messages/messages 2006-09-02 19:23:16 UTC (rev 1232) +++ branches/sourceview2/messages/messages 2006-09-05 15:46:47 UTC (rev 1233) @@ -1,33 +0,0 @@ -# JSXE source view English properties file -# $Id$ -#:mode=properties: -#:tabSize=4:indentSize=4:noTabs=true: -#:folding=explicit:collapseFolds=1 - -#{{{ Source View Options -SourceView.Options.Title=Source View -SourceView.Options.EndOfLineMarker=End of line markers -SourceView.Syntax.Object=Node Type -SourceView.Syntax.Style=Text Style -SourceView.ColorChooser.Title=Color Chooser -SourceView.Markup=Markup -SourceView.Invalid=Invalid -#}}} - -#{{{ Style Editor -SourceView.StyleEditor.Title=Style Editor -SourceView.StyleEditor.Color=Text Color -SourceView.StyleEditor.Bold=Bold -SourceView.StyleEditor.Italics=Italics -#}}} - -#{{{ Find Dialog -SourceView.Find.title and Replace -SourceView.Ignore.Case=Ignore Case -SourceView.Search.For=Search for: -SourceView.Replace.With=Replace With: -SourceView.Replace.And.Find=Replace&Find -SourceView.No.More.Matches.title=No More Matches -SourceView.No.More.Matches.message="No more matches were found. Continue search from the beginning?" -SourceView.Search.Error.title=Search Error -#}}} \ No newline at end of file Deleted: branches/sourceview2/messages/messages.de =================================================================== --- branches/sourceview2/messages/messages.de 2006-09-02 19:23:16 UTC (rev 1232) +++ branches/sourceview2/messages/messages.de 2006-09-05 15:46:47 UTC (rev 1233) @@ -1,30 +0,0 @@ -# JSXE source view German properties file -# $Id$ -# Maintained by Bianca Shöen -#:mode=properties: -#:tabSize=4:indentSize=4:noTabs=true: -#:folding=explicit:collapseFolds=1: - -# ä Ä é ö Ö ü Ü ß - -#{{{ Source View Options -SourceView.Options.Title=Source View Optionen -SourceView.Syntax.Object=Knoten Typ -SourceView.Syntax.Style=Text Stil -SourceView.Syntax.ToolTip=Dieses Tool ermöglicht es, den Font für verschiedene Knoten zu setzen. -SourceView.ColorChooser.Title=Farbwähler -SourceView.Markup=Markup -SourceView.Invalid=Ungültig -#}}} - -#{{{ Style Editor -SourceView.StyleEditor.Title=Stil Editor -SourceView.StyleEditor.Color=Textfarbe -SourceView.StyleEditor.Color.ToolTip=<HTML>Die Farbe dieses Knoten Typs kann hier geändert werden. <BR>H�ckchen dieser Box entfernen setzten die Farbe zu schwarz zurück. <BR>Die rechteckige Box neben diesr Auswahl, kann<BR> benutzt werden um verschiedene Farben auszuwählen.</HTML> -SourceView.StyleEditor.Bold=Fett -SourceView.StyleEditor.Bold.ToolTip=schaltet Fettdruck an/aus -SourceView.StyleEditor.Italics=Kursiv -SourceView.StyleEditor.Italics.ToolTip=schaltet Kursivdruck an/aus - -#}}} - Deleted: branches/sourceview2/messages/messages.en_GB =================================================================== --- branches/sourceview2/messages/messages.en_GB 2006-09-02 19:23:16 UTC (rev 1232) +++ branches/sourceview2/messages/messages.en_GB 2006-09-05 15:46:47 UTC (rev 1233) @@ -1,13 +0,0 @@ -# JSXE source view British English properties file -# $Id: messages 996 2006-07-07 03:46:52Z ian_lewis $ -#:mode=properties: -#:tabSize=4:indentSize=4:noTabs=true: -#:folding=explicit:collapseFolds=1 - -#{{{ Source View Options -SourceView.ColorChooser.Title=Colour Chooser -#}}} - -#{{{ Style Editor -SourceView.StyleEditor.Color=Text Colour -#}}} Deleted: branches/sourceview2/messages/messages.ja =================================================================== --- branches/sourceview2/messages/messages.ja 2006-09-02 19:23:16 UTC (rev 1232) +++ branches/sourceview2/messages/messages.ja 2006-09-05 15:46:47 UTC (rev 1233) @@ -1,13 +0,0 @@ -# JSXE source view Japanese properties file -# $Id$ -# Maintained by Ian Lewis -#:mode=properties: -#:tabSize=4:indentSize=4:noTabs=true: -#:folding=explicit:collapseFolds=1: - -#{{{ Source View Options -SourceView.Options.Title=ソース表示 -SourceView.Syntax.Object=ノードタイプ -SourceView.Markup=マーク付け -SourceView.Invalid=無効 -#}}} Copied: branches/sourceview2/messages/messages.properties (from rev 1232, trunk/sourceview/messages/messages.properties) =================================================================== --- branches/sourceview2/messages/messages.properties (rev 0) +++ branches/sourceview2/messages/messages.properties 2006-09-05 15:46:47 UTC (rev 1233) @@ -0,0 +1,33 @@ +# JSXE source view English properties file +# $Id$ +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1 + +#{{{ Source View Options +SourceView.Options.Title=Source View +SourceView.Options.EndOfLineMarker=End of line markers +SourceView.Syntax.Object=Node Type +SourceView.Syntax.Style=Text Style +SourceView.ColorChooser.Title=Color Chooser +SourceView.Markup=Markup +SourceView.Invalid=Invalid +#}}} + +#{{{ Style Editor +SourceView.StyleEditor.Title=Style Editor +SourceView.StyleEditor.Color=Text Color +SourceView.StyleEditor.Bold=Bold +SourceView.StyleEditor.Italics=Italics +#}}} + +#{{{ Find Dialog +SourceView.Find.title and Replace +SourceView.Ignore.Case=Ignore Case +SourceView.Search.For=Search for: +SourceView.Replace.With=Replace With: +SourceView.Replace.And.Find=Replace&Find +SourceView.No.More.Matches.title=No More Matches +SourceView.No.More.Matches.message="No more matches were found. Continue search from the beginning?" +SourceView.Search.Error.title=Search Error +#}}} \ No newline at end of file Deleted: branches/sourceview2/messages/messages.sv =================================================================== --- branches/sourceview2/messages/messages.sv 2006-09-02 19:23:16 UTC (rev 1232) +++ branches/sourceview2/messages/messages.sv 2006-09-05 15:46:47 UTC (rev 1233) @@ -1,7 +0,0 @@ -# JSXE Swedish properties file -# $Id$ -# Currently maintained by Patrik Johansson <pa...@it...> -#:mode=properties: -#:tabSize=4:indentSize=4:noTabs=true: -#:folding=explicit:collapseFolds=1: - Copied: branches/sourceview2/messages/messages_de.properties (from rev 1232, trunk/sourceview/messages/messages_de.properties) =================================================================== --- branches/sourceview2/messages/messages_de.properties (rev 0) +++ branches/sourceview2/messages/messages_de.properties 2006-09-05 15:46:47 UTC (rev 1233) @@ -0,0 +1,30 @@ +# JSXE source view German properties file +# $Id$ +# Maintained by Bianca Shöen +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1: + +# ä Ä é ö Ö ü Ü ß + +#{{{ Source View Options +SourceView.Options.Title=Source View Optionen +SourceView.Syntax.Object=Knoten Typ +SourceView.Syntax.Style=Text Stil +SourceView.Syntax.ToolTip=Dieses Tool ermöglicht es, den Font für verschiedene Knoten zu setzen. +SourceView.ColorChooser.Title=Farbwähler +SourceView.Markup=Markup +SourceView.Invalid=Ungültig +#}}} + +#{{{ Style Editor +SourceView.StyleEditor.Title=Stil Editor +SourceView.StyleEditor.Color=Textfarbe +SourceView.StyleEditor.Color.ToolTip=<HTML>Die Farbe dieses Knoten Typs kann hier geändert werden. <BR>H�ckchen dieser Box entfernen setzten die Farbe zu schwarz zurück. <BR>Die rechteckige Box neben diesr Auswahl, kann<BR> benutzt werden um verschiedene Farben auszuwählen.</HTML> +SourceView.StyleEditor.Bold=Fett +SourceView.StyleEditor.Bold.ToolTip=schaltet Fettdruck an/aus +SourceView.StyleEditor.Italics=Kursiv +SourceView.StyleEditor.Italics.ToolTip=schaltet Kursivdruck an/aus + +#}}} + Copied: branches/sourceview2/messages/messages_en_GB.properties (from rev 1232, trunk/sourceview/messages/messages_en_GB.properties) =================================================================== --- branches/sourceview2/messages/messages_en_GB.properties (rev 0) +++ branches/sourceview2/messages/messages_en_GB.properties 2006-09-05 15:46:47 UTC (rev 1233) @@ -0,0 +1,13 @@ +# JSXE source view British English properties file +# $Id: messages 996 2006-07-07 03:46:52Z ian_lewis $ +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1 + +#{{{ Source View Options +SourceView.ColorChooser.Title=Colour Chooser +#}}} + +#{{{ Style Editor +SourceView.StyleEditor.Color=Text Colour +#}}} Copied: branches/sourceview2/messages/messages_ja.properties (from rev 1232, trunk/sourceview/messages/messages_ja.properties) =================================================================== --- branches/sourceview2/messages/messages_ja.properties (rev 0) +++ branches/sourceview2/messages/messages_ja.properties 2006-09-05 15:46:47 UTC (rev 1233) @@ -0,0 +1,13 @@ +# JSXE source view Japanese properties file +# $Id$ +# Maintained by Ian Lewis +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1: + +#{{{ Source View Options +SourceView.Options.Title=ソース表示 +SourceView.Syntax.Object=ノードタイプ +SourceView.Markup=マーク付け +SourceView.Invalid=無効 +#}}} Copied: branches/sourceview2/messages/messages_ru.properties (from rev 1232, trunk/sourceview/messages/messages_ru.properties) =================================================================== --- branches/sourceview2/messages/messages_ru.properties (rev 0) +++ branches/sourceview2/messages/messages_ru.properties 2006-09-05 15:46:47 UTC (rev 1233) @@ -0,0 +1,34 @@ +# JSXE source view English properties file +# $Id: messages 1068 2006-07-26 16:57:45Z ian_lewis $ +# Maintained by Alexandr Gridnev (ale...@ya...) +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1 + +#{{{ Source View Options +SourceView.Options.Title=Отображение исходником +SourceView.Options.EndOfLineMarker=Отображать символы конца строки +SourceView.Syntax.Object=Тип узла +SourceView.Syntax.Style=Стиль текста +SourceView.ColorChooser.Title=Злобное устройство предназначенное для выбора цветов +SourceView.Markup=Элементы разметки +SourceView.Invalid=Неправильное +#}}} + +#{{{ Style Editor +SourceView.StyleEditor.Title=Редактор стилей +SourceView.StyleEditor.Color=Цвет текста +SourceView.StyleEditor.Bold=Жирный +SourceView.StyleEditor.Italics=Курсив +#}}} + +#{{{ Find Dialog +SourceView.Find.title=Найти и заменить +SourceView.Ignore.Case=Игнорировать регистр символов +SourceView.Search.For=Искать: +SourceView.Replace.With=Заменить на: +SourceView.Replace.And.Find=Найти и заменить +SourceView.No.More.Matches.title=Дальше не найдено :( +SourceView.No.More.Matches.message="Ничего не найдено. Искать с начала документа?" +SourceView.Search.Error.title=Ошибка поиска :( +#}}} Copied: branches/sourceview2/messages/messages_sv.properties (from rev 1232, trunk/sourceview/messages/messages_sv.properties) =================================================================== --- branches/sourceview2/messages/messages_sv.properties (rev 0) +++ branches/sourceview2/messages/messages_sv.properties 2006-09-05 15:46:47 UTC (rev 1233) @@ -0,0 +1,7 @@ +# JSXE Swedish properties file +# $Id$ +# Currently maintained by Patrik Johansson <pa...@it...> +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1: + Modified: branches/sourceview2/src/sourceview/SourceView.java =================================================================== --- branches/sourceview2/src/sourceview/SourceView.java 2006-09-02 19:23:16 UTC (rev 1232) +++ branches/sourceview2/src/sourceview/SourceView.java 2006-09-05 15:46:47 UTC (rev 1233) @@ -25,12 +25,9 @@ package sourceview; //{{{ imports -/* -All classes are listed explicitly so -it is easy to see which package it -belongs to. -*/ +import sourceview.action.*; + //{{{ jsXe classes import net.sourceforge.jsxe.*; import net.sourceforge.jsxe.gui.Messages; @@ -39,6 +36,8 @@ import net.sourceforge.jsxe.dom.XMLDocument; import net.sourceforge.jsxe.dom.XMLDocumentListener; import net.sourceforge.jsxe.msg.PropertyChanged; +import net.sourceforge.jsxe.msg.UndoEvent; +import net.sourceforge.jsxe.msg.RedoEvent; import net.sourceforge.jsxe.util.Log; import net.sourceforge.jsxe.util.MiscUtilities; //}}} @@ -130,6 +129,12 @@ m_textarea.putClientProperty(InputHandler.SMART_HOME_END_PROPERTY, Boolean.TRUE); + ActionManager.addActionImplementation("cut", m_textarea, new EditCutAction()); + ActionManager.addActionImplementation("copy", m_textarea, new EditCopyAction()); + ActionManager.addActionImplementation("paste", m_textarea, new EditPasteAction()); + ActionManager.addActionImplementation("find", m_textarea, new EditFindAction()); + ActionManager.addActionImplementation("findnext", m_textarea, new EditFindNextAction()); + //{{{ create popup menu JPopupMenu popup = new JPopupMenu(); @@ -151,30 +156,6 @@ setLayout(new BorderLayout()); add(m_textarea, BorderLayout.CENTER); - //{{{ Construct Edit Menu - m_editMenu = new JMenu(Messages.getMessage("Edit.Menu")); - m_editMenu.setMnemonic('E'); - // These don't do anything yet. - // JMenuItem menuItem = new JMenuItem("Undo"); - // menuItem.addActionListener( new EditUndoAction() ); - // menu.add( menuItem ); - // menuItem = new JMenuItem("Redo"); - // menuItem.addActionListener( new EditRedoAction() ); - // menu.add(menuItem); - // menu.addSeparator(); - menuItem = new JMenuItem(ActionManager.getAction("cut")); - m_editMenu.add(menuItem); - menuItem = new JMenuItem(ActionManager.getAction("copy")); - m_editMenu.add(menuItem); - menuItem = new JMenuItem(ActionManager.getAction("paste")); - m_editMenu.add(menuItem); - m_editMenu.addSeparator(); - menuItem = new JMenuItem(ActionManager.getAction("find")); - m_editMenu.add(menuItem); - menuItem = new JMenuItem(ActionManager.getAction("findnext")); - m_editMenu.add(menuItem); - //}}} - setDocumentBuffer(document); //focus on the text area the first time the view is shown @@ -223,6 +204,18 @@ SourceViewOptionPane.parseStyle(jsXe.getProperty("source.invalid.color")), }); } + } else { + if ((message instanceof UndoEvent) || (message instanceof RedoEvent)) { + //hack to get undo to work properly + try { + int caret = m_textarea.getCaretPosition(); + m_textarea.setDocument(new SourceViewDocument(m_document)); + m_textarea.setTokenMarker(new XMLTokenMarker()); + m_textarea.setCaretPosition(caret); + } catch (IOException ioe) { + Log.log(Log.ERROR, this, ioe); + } + } } }//}}} @@ -248,6 +241,13 @@ dialog.dispose(); } m_document.removeXMLDocumentListener(docListener); + + ActionManager.removeActionImplementation("cut", m_textarea); + ActionManager.removeActionImplementation("copy", m_textarea); + ActionManager.removeActionImplementation("paste", m_textarea); + ActionManager.removeActionImplementation("find", m_textarea); + ActionManager.removeActionImplementation("findNext", m_textarea); + return true; }//}}} @@ -260,7 +260,7 @@ //{{{ getMenus() public JMenu[] getMenus() { - return new JMenu[] { m_editMenu }; + return null; }//}}} //{{{ getDocumentBuffer() @@ -320,6 +320,15 @@ Log.log(Log.WARNING, this, e.getMessage()); } } + if (key.equals(XMLDocument.ENCODING)) { + try { + //reload the document + m_textarea.setDocument(new SourceViewDocument(m_document)); + m_textarea.setTokenMarker(new XMLTokenMarker()); + } catch (IOException e) { + Log.log(Log.ERROR, this, e); + } + } }//}}} //{{{ structureChanged() @@ -418,8 +427,6 @@ private String m_replaceString; private SourceViewPlugin m_plugin; - private JMenu m_editMenu; - //}}} } Modified: branches/sourceview2/src/sourceview/SourceViewDocument.java =================================================================== --- branches/sourceview2/src/sourceview/SourceViewDocument.java 2006-09-02 19:23:16 UTC (rev 1232) +++ branches/sourceview2/src/sourceview/SourceViewDocument.java 2006-09-05 15:46:47 UTC (rev 1233) @@ -55,6 +55,7 @@ import javax.swing.text.GapContent; import javax.swing.text.SimpleAttributeSet; import javax.swing.text.StyleContext; +import javax.swing.undo.UndoableEdit; //}}} //{{{ DOM classes @@ -73,6 +74,7 @@ /** * The Document model used by the SourceView for displaying the text of * an XML document. + * * @author <a href="mailto:IanLewis at member dot fsf dot org">Ian Lewis</a> * @version $Id$ * @see SourceView @@ -85,8 +87,6 @@ super(); m_document = document; - // document.addXMLDocumentListener(new SourceViewDocumentXMLDocumentListener()); - if (document != null) { try { @@ -138,7 +138,27 @@ //}}} + //{{{ beginCompoundEdit() + + public void beginCompoundEdit() { + m_document.beginCompoundEdit(); + }//}}} + + //{{{ endCompoundEdit() + + public void endCompoundEdit() { + m_document.endCompoundEdit(); + }//}}} + + //{{{ addUndoableEdit() + + public void addUndoableEdit(UndoableEdit edit) { + // Log.log(Log.DEBUG, this, "adding edit"); + // m_document.addUndoableEdit(edit); + }//}}} + //{{{ Private members + private XMLDocument m_document; //}}} Modified: branches/sourceview2/src/sourceview/SourceViewPlugin.java =================================================================== --- branches/sourceview2/src/sourceview/SourceViewPlugin.java 2006-09-02 19:23:16 UTC (rev 1232) +++ branches/sourceview2/src/sourceview/SourceViewPlugin.java 2006-09-05 15:46:47 UTC (rev 1233) @@ -60,11 +60,6 @@ //{{{ SourceViewPlugin public SourceViewPlugin() { - addAction(new EditCutAction()); - addAction(new EditCopyAction()); - addAction(new EditPasteAction()); - addAction(new EditFindAction()); - addAction(new EditFindNextAction()); }//}}} //{{{ newDocumentView() Modified: branches/sourceview2/src/sourceview/action/EditCopyAction.java =================================================================== --- branches/sourceview2/src/sourceview/action/EditCopyAction.java 2006-09-02 19:23:16 UTC (rev 1232) +++ branches/sourceview2/src/sourceview/action/EditCopyAction.java 2006-09-05 15:46:47 UTC (rev 1233) @@ -30,14 +30,14 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.util.Log; //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; //}}} @@ -49,20 +49,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class EditCopyAction extends LocalizedAction { +public class EditCopyAction implements ContextSpecificAction.ActionImplementation { - //{{{ EditCopyAction constructor - public EditCopyAction() { - super(SourceViewPlugin.PLUGIN_NAME+".copy"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.copy"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof SourceView) { SourceView sourceView = (SourceView)docView; Modified: branches/sourceview2/src/sourceview/action/EditCutAction.java =================================================================== --- branches/sourceview2/src/sourceview/action/EditCutAction.java 2006-09-02 19:23:16 UTC (rev 1232) +++ branches/sourceview2/src/sourceview/action/EditCutAction.java 2006-09-05 15:46:47 UTC (rev 1233) @@ -30,14 +30,14 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.util.Log; //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; //}}} @@ -49,20 +49,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class EditCutAction extends LocalizedAction { +public class EditCutAction implements ContextSpecificAction.ActionImplementation { - //{{{ EditCutAction constructor - public EditCutAction() { - super(SourceViewPlugin.PLUGIN_NAME+".cut"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.cut"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof SourceView) { SourceView sourceView = (SourceView)docView; Modified: branches/sourceview2/src/sourceview/action/EditFindAction.java =================================================================== --- branches/sourceview2/src/sourceview/action/EditFindAction.java 2006-09-02 19:23:16 UTC (rev 1232) +++ branches/sourceview2/src/sourceview/action/EditFindAction.java 2006-09-05 15:46:47 UTC (rev 1233) @@ -30,13 +30,13 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.DocumentView; //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; //}}} @@ -48,20 +48,10 @@ * @version $Id$ */ -public class EditFindAction extends LocalizedAction { +public class EditFindAction implements ContextSpecificAction.ActionImplementation { - //{{{ EditFindAction constructor - public EditFindAction() { - super(SourceViewPlugin.PLUGIN_NAME+".find"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.find"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof SourceView) { SourceView sourceView = (SourceView)docView; Modified: branches/sourceview2/src/sourceview/action/EditFindNextAction.java =================================================================== --- branches/sourceview2/src/sourceview/action/EditFindNextAction.java 2006-09-02 19:23:16 UTC (rev 1232) +++ branches/sourceview2/src/sourceview/action/EditFindNextAction.java 2006-09-05 15:46:47 UTC (rev 1233) @@ -30,13 +30,13 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.DocumentView; //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; //}}} @@ -49,20 +49,10 @@ * @version $Id$ */ -public class EditFindNextAction extends LocalizedAction { +public class EditFindNextAction implements ContextSpecificAction.ActionImplementation { - //{{{ EditFindNextAction constructor - public EditFindNextAction() { - super(SourceViewPlugin.PLUGIN_NAME+".findnext"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.findnext"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof SourceView) { SourceView sourceView = (SourceView)docView; Modified: branches/sourceview2/src/sourceview/action/EditPasteAction.java =================================================================== --- branches/sourceview2/src/sourceview/action/EditPasteAction.java 2006-09-02 19:23:16 UTC (rev 1232) +++ branches/sourceview2/src/sourceview/action/EditPasteAction.java 2006-09-05 15:46:47 UTC (rev 1233) @@ -30,14 +30,14 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; -import net.sourceforge.jsxe.gui.DocumentView; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.util.Log; +import net.sourceforge.jsxe.gui.DocumentView; //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; //}}} @@ -49,20 +49,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class EditPasteAction extends LocalizedAction { +public class EditPasteAction implements ContextSpecificAction.ActionImplementation { - //{{{ EditPasteAction constructor - public EditPasteAction() { - super(SourceViewPlugin.PLUGIN_NAME+".paste"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.paste"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof SourceView) { SourceView sourceView = (SourceView)docView; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-02 19:23:32
|
Revision: 1232 http://svn.sourceforge.net/jsxe/?rev=1232&view=rev Author: ian_lewis Date: 2006-09-02 12:23:16 -0700 (Sat, 02 Sep 2006) Log Message: ----------- Minor changes Modified Paths: -------------- branches/jsxe2/src/net/sourceforge/jsxe/io/VFSManager.java Modified: branches/jsxe2/src/net/sourceforge/jsxe/io/VFSManager.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/io/VFSManager.java 2006-09-02 19:20:52 UTC (rev 1231) +++ branches/jsxe2/src/net/sourceforge/jsxe/io/VFSManager.java 2006-09-02 19:23:16 UTC (rev 1232) @@ -60,12 +60,12 @@ //}}} /** - * jEdit's virtual filesystem allows it to transparently edit files + * jsXe's virtual filesystem allows it to transparently edit files * stored elsewhere than the local filesystem, for example on an FTP * site. See the {@link VFS} class for implementation details.<p> * - * Note that most of the jEdit API is not thread-safe, so special care - * must be taken when making jEdit API calls. Also, it is not safe to + * Note that most of the jsXe API is not thread-safe, so special care + * must be taken when making jsXe API calls. Also, it is not safe to * call <code>SwingUtilities.invokeAndWait()</code> from a work request; * it can cause a deadlock if the given runnable then later calls * {@link #waitForRequests()}. @@ -76,10 +76,6 @@ * @since jsXe 0.5 pre3 */ public class VFSManager { - /** - * The service type. See {@link org.gjt.sp.jedit.ServiceManager}. - */ - // public static final String SERVICE = "net.sourceforge.jsxe.io.VFS"; //{{{ init() method /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-02 19:21:12
|
Revision: 1231 http://svn.sourceforge.net/jsxe/?rev=1231&view=rev Author: ian_lewis Date: 2006-09-02 12:20:52 -0700 (Sat, 02 Sep 2006) Log Message: ----------- Resolved compile problems dom2 and io packages now compile Modified Paths: -------------- branches/jsxe2/src/net/sourceforge/jsxe/BufferHistory.java branches/jsxe2/src/net/sourceforge/jsxe/JARClassLoader.java branches/jsxe2/src/net/sourceforge/jsxe/dom2/ls/XMLDocumentIORequest.java branches/jsxe2/src/net/sourceforge/jsxe/io/VFSManager.java Modified: branches/jsxe2/src/net/sourceforge/jsxe/BufferHistory.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/BufferHistory.java 2006-09-02 17:49:07 UTC (rev 1230) +++ branches/jsxe2/src/net/sourceforge/jsxe/BufferHistory.java 2006-09-02 19:20:52 UTC (rev 1231) @@ -474,6 +474,7 @@ static { m_excludeKeys = new ArrayList(); m_excludeKeys.add(DocumentBuffer.LINE_SEPARATOR); + m_excludeKeys.add("xmldocument.dirty"); } //}}} Modified: branches/jsxe2/src/net/sourceforge/jsxe/JARClassLoader.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/JARClassLoader.java 2006-09-02 17:49:07 UTC (rev 1230) +++ branches/jsxe2/src/net/sourceforge/jsxe/JARClassLoader.java 2006-09-02 19:20:52 UTC (rev 1231) @@ -99,43 +99,46 @@ */ protected Class findClass(String name) throws ClassNotFoundException { - String classFileName = name.replace('.','/').concat(".class"); - Iterator jarItr = m_jarFiles.values().iterator(); + synchronized(this) { - while (jarItr.hasNext()) { - try { - - JarFile zipFile = (JarFile)jarItr.next(); - ZipEntry entry = zipFile.getEntry(classFileName); - - if (entry != null) { + String classFileName = name.replace('.','/').concat(".class"); + Iterator jarItr = m_jarFiles.values().iterator(); + + while (jarItr.hasNext()) { + try { - InputStream in = zipFile.getInputStream(entry); + JarFile zipFile = (JarFile)jarItr.next(); + ZipEntry entry = zipFile.getEntry(classFileName); - boolean fail = false; - int len = (int)entry.getSize(); - byte[] data = new byte[len]; - int success = 0; - int offset = 0; - - while(success < len && !fail) { - len -= success; - offset += success; + if (entry != null) { - success = in.read(data,offset,len); - if(success == -1) { - fail = true; + InputStream in = zipFile.getInputStream(entry); + + boolean fail = false; + int len = (int)entry.getSize(); + byte[] data = new byte[len]; + int success = 0; + int offset = 0; + + while(success < len && !fail) { + len -= success; + offset += success; + + success = in.read(data,offset,len); + if(success == -1) { + fail = true; + } } + Class c = defineClass(name,data,0,data.length); + return c; } - Class c = defineClass(name,data,0,data.length); - return c; + + } catch(IOException io) { + //failed, try the next jar } - - } catch(IOException io) { - //failed, try the next jar } + throw new ClassNotFoundException(name); } - throw new ClassNotFoundException(name); }//}}} Modified: branches/jsxe2/src/net/sourceforge/jsxe/dom2/ls/XMLDocumentIORequest.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom2/ls/XMLDocumentIORequest.java 2006-09-02 17:49:07 UTC (rev 1230) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom2/ls/XMLDocumentIORequest.java 2006-09-02 19:20:52 UTC (rev 1231) @@ -222,7 +222,7 @@ } read(autodetect(in),length,false); - buffer.setNewFile(false); + // buffer.setNewFile(false); } catch(CharConversionException ch) { Log.log(Log.ERROR,this,ch); @@ -622,7 +622,7 @@ String savePath; boolean twoStageSave = (vfs.getCapabilities() & VFS.RENAME_CAP) != 0 - && jsXe.getBooleanProperty("twoStageSave"); + && jsXe.getBooleanProperty("twoStageSave", false); if(twoStageSave) savePath = vfs.getTwoStageSaveName(path); else @@ -727,8 +727,7 @@ { //buffer.readLock(); - if(!buffer.isDirty()) - { + if(!buffer.getBooleanProperty("xmldocument.dirty", false)) { // buffer has been saved while we // were waiting. return; @@ -820,9 +819,9 @@ //{{{ write() private void write(XMLDocument buffer, OutputStream out) throws IOException { - String newLine = getProperty(XMLDocument.LINE_SEPARATOR); + String newLine = buffer.getProperty(XMLDocument.LINE_SEPARATOR); - String encoding = getProperty(XMLDocument.ENCODING); + String encoding = buffer.getProperty(XMLDocument.ENCODING); if (encoding.equals(MiscUtilities.UTF_8_Y)) { // not supported by Java... out.write(UTF8_MAGIC_1); Modified: branches/jsxe2/src/net/sourceforge/jsxe/io/VFSManager.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/io/VFSManager.java 2006-09-02 17:49:07 UTC (rev 1230) +++ branches/jsxe2/src/net/sourceforge/jsxe/io/VFSManager.java 2006-09-02 19:20:52 UTC (rev 1231) @@ -29,6 +29,7 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; +import net.sourceforge.jsxe.JARClassLoader; import net.sourceforge.jsxe.EditBus; import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.ErrorListDialog; @@ -78,7 +79,7 @@ /** * The service type. See {@link org.gjt.sp.jedit.ServiceManager}. */ - public static final String SERVICE = "net.sourceforge.jsxe.io.VFS"; + // public static final String SERVICE = "net.sourceforge.jsxe.io.VFS"; //{{{ init() method /** @@ -86,12 +87,13 @@ */ public static void init() { int count = jsXe.getIntegerProperty("ioThreadCount", 4); - ioThreadPool = new WorkThreadPool("jsXe I/O",count); - JARClassLoader classLoader = new JARClassLoader(); + ioThreadPool = new WorkThreadPool("jsXe I/O", count); + // JARClassLoader classLoader = new JARClassLoader(); + JARClassLoader classLoader = jsXe.getPluginLoader(); for (int i = 0; i < ioThreadPool.getThreadCount(); i++) { - ioThreadPool.getThread(i).setContextClassLoader( - classLoader); + ioThreadPool.getThread(i).setContextClassLoader(classLoader); } + } //}}} //{{{ start() method @@ -120,39 +122,26 @@ return urlVFS; } //}}} - //{{{ getVFSByName() method - /** - * @deprecated Use <code>getVFSForProtocol()</code> instead. - */ - public static VFS getVFSByName(String name) - { - // in new api, protocol always equals name - VFS vfs = (VFS)ServiceManager.getService(SERVICE,name); - if(vfs == null) - return (VFS)vfsHash.get(name); - else - return vfs; - } //}}} - //{{{ getVFSForProtocol() method /** * Returns the VFS for the specified protocol. * @param protocol The protocol */ - public static VFS getVFSForProtocol(String protocol) - { - if(protocol.equals("file")) + public static VFS getVFSForProtocol(String protocol) { + if (protocol.equals("file")) return fileVFS; - else - { - VFS vfs = (VFS)ServiceManager.getService(SERVICE,protocol); - if(vfs == null) - vfs = (VFS)protocolHash.get(protocol); + else { + // VFS vfs = (VFS)ServiceManager.getService(SERVICE,protocol); + // if (vfs == null) { + // vfs = (VFS)protocolHash.get(protocol); + // } + VFS vfs = (VFS)protocolHash.get(protocol); - if(vfs != null) + if (vfs != null) { return vfs; - else + } else { return urlVFS; + } } } //}}} @@ -170,12 +159,7 @@ } //}}} //{{{ registerVFS() method - /** - * @deprecated Write a <code>services.xml</code> file instead; - * see {@link org.gjt.sp.jedit.ServiceManager}. - */ - public static void registerVFS(String protocol, VFS vfs) - { + public static void registerVFS(String protocol, VFS vfs) { Log.log(Log.DEBUG,VFSManager.class,"Registered " + vfs.getName() + " filesystem for " + protocol + " protocol"); @@ -183,37 +167,24 @@ protocolHash.put(protocol,vfs); } //}}} - //{{{ getFilesystems() method - /** - * @deprecated Use <code>getVFSs()</code> instead. - */ - public static Enumeration getFilesystems() - { - return vfsHash.elements(); - } //}}} - //{{{ getVFSs() method /** * Returns a list of all registered filesystems. */ - public static String[] getVFSs() - { - // the sooner ppl move to the new api, the less we'll need - // crap like this + public static String[] getVFSs() { List returnValue = new LinkedList(); - String[] newAPI = ServiceManager.getServiceNames(SERVICE); - if(newAPI != null) - { - for(int i = 0; i < newAPI.length; i++) - { - returnValue.add(newAPI[i]); - } - } + // String[] newAPI = ServiceManager.getServiceNames(SERVICE); + // if(newAPI != null) + // { + // for(int i = 0; i < newAPI.length; i++) + // { + // returnValue.add(newAPI[i]); + // } + // } Enumeration oldAPI = vfsHash.keys(); while(oldAPI.hasMoreElements()) returnValue.add(oldAPI.nextElement()); - return (String[])returnValue.toArray(new String[ - returnValue.size()]); + return (String[])returnValue.toArray(new String[returnValue.size()]); } //}}} //}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-02 17:49:13
|
Revision: 1230 http://svn.sourceforge.net/jsxe/?rev=1230&view=rev Author: ian_lewis Date: 2006-09-02 10:49:07 -0700 (Sat, 02 Sep 2006) Log Message: ----------- Changed windows new lines to unix newlines Modified Paths: -------------- trunk/jsxe/messages/messages_ru.properties Modified: trunk/jsxe/messages/messages_ru.properties =================================================================== --- trunk/jsxe/messages/messages_ru.properties 2006-09-02 17:47:30 UTC (rev 1229) +++ trunk/jsxe/messages/messages_ru.properties 2006-09-02 17:49:07 UTC (rev 1230) @@ -1,298 +1,298 @@ -# JSXE English properties file -# $Id: messages 1158 2006-08-18 18:42:18Z ian_lewis $ -# Maintained by Alexandr Gridnev (ale...@ya...) -#:mode=properties: -#:tabSize=4:indentSize=4:noTabs=true: -#:folding=explicit:collapseFolds=1: - -#{{{ common properties - -common.ok=Принять -common.cancel=Отменить -common.open=Открыть -common.save=Сохранить -common.save.as=Сохранить как -common.close=Закрыть -common.apply=Применить -common.more=Еще -common.insert=Вставить -common.add=Добавить -common.remove=Удалить -common.moveUp=Поднять -common.moveDown=Опустить -common.find=Искать - -common.ctrl=Ctrl -common.alt=Alt -common.shift=Shift -common.meta=Meta - -#}}} - -#{{{ XML Terminology - -#{{{ XML Node Types -xml.element=Элемент -xml.processing.instruction=Правило обработки -xml.cdata=Секция CDATA -xml.text=Текст -xml.entity.reference=Ссылка на сущность -xml.declaration=Объявление элемента -xml.notation=Замечание -xml.entity=Объявление сущности -xml.comment=Комментарий -xml.attribute=Свойство -xml.doctype=Тип документа -#}}} - -xml.attribute.value.short=Значение -xml.attribute.value=Значение свойства -xml.document=документ XML -xml.namespace=Пространство имен -xml.namespace.prefix=Префикс пространства имен -xml.namespace.prefix.short=Префикс -xml.namespace.decl=Объявление пространства имен -xml.doctypedef=Определение типа документа (DTD) -xml.doctype.name=Имя -xml.doctype.public=Публичный Id -xml.doctype.system=Системный Id -xml.schema=Схема XML -#}}} - -#{{{ Global Options -Global.Options.Dialog.Title=Глобальные опции -Global.Options.Title=Главное -Global.Options.Max.Recent.Files=Помнить ранее открытых файлов: -Global.Options.Max.Recent.Files.ToolTip=Максимальное количество ранее открытых файлов, про которые jsXe помнит и отображает в меню Файл->Ранее открытые файлы -Global.Options.network-off=Кешировать всегда, без спросу -Global.Options.network-cache=Кешировать удаленные файлы только спросив разрешения -Global.Options.network-always=Скачивать всегда, без спросу -Global.Options.network=Скачивание DTD и схемы: -Global.Options.Menu.Spill.Over=Меню выпадают после: -Global.Options.Undos.To.Remember=Запомнить действий: -Global.Options.Undos.To.Remember.ToolTip=<HTML>jsXe запомнит столько действий и потом их можно будет отменить.<BR> Однако он не может запомнить действия, выполненные после переключения видов</HTML> - -Shortcuts.Options.Title=Горячие клавиши -Shortcuts.Options.Select.Label=Редактировать горячие клавиши: -Shortcuts.Options.Shortcut=Горячая клавиша -Shortcuts.Options.Command=Команда - -Grab.Key.title=Нажмите клавишу -Grab.Key.caption=Нажмите клавишу для команды "{0}", а котом нажмите Принять. -Grab.Key.keyboard-test=Input the key strokes that are causing problems. -Grab.Key.assigned-to=Уже назначено для: {0} -Grab.Key.assigned-to.none=<ничего> -Grab.Key.clear=Очистить -Grab.Key.remove=Удалить текущее - -Grab.Key.remove-ask.title=Удалить клавишу? -Grab.Key.remove-ask.message=\ - Вы не назначили новую клавишу.\n\ - Вы что, всеръез решили лишить команду клавиши, правда? - -Grab.Key.duplicate-alt-shortcut.title=Две команды на клавишу -Grab.Key.duplicate-alt-shortcut.message=\ - Клавиша которую вы назначили уже занята за другой командой\n\ - Просьба выбрать другую, ато они подерутся. - -Grab.Key.duplicate-shortcut.title=Две команды на клавишу -Grab.Key.duplicate-shortcut.message=\ - Эта клавиша уже занята за\n\ - "{0}".\n\ - \n\ - Вы хотите отвергнуть это назначение? -#}}} - -#{{{ Document Options -Document.Options.Title=Опции документа XML -Document.Options.Message=Этот диалог управляет настройками только\n текущего документа. Чтобы изменить\n базовые настройки лезте в\n Инструменты->Глобальные опции. -Document.Options.Line.Separator=Разделитель строк: -Document.Options.Line.Separator.ToolTip=Разделитель строк. По умолчанию выбирается традиционный для вашей операционной системы. -Document.Options.Encoding=Кодировка: -Document.Options.Encoding.ToolTip=Кодировка, которую jsXe использует для записи текстовой инфы в файл. -Document.Options.Indent.Width=Ширина отступа: -Document.Options.Indent.Width.ToolTip=Ширина используемая при форматировании и отображении символов табуляции. -Document.Options.Format.XML=Форматировать выводимый XML -Document.Options.Format.XML.ToolTip=Если это выбрано, XML будет форматироваться автоматически. -Document.Options.Validate=Подтв. если доступны DTD или Схема -Document.Options.Validate.ToolTip=Если это выбрано, jsXe будет подтверждать (проверять?) документ XML. -Document.Options.Soft.Tabs=Мягкие табуляции (эмуляция пробелами) -Document.Options.Soft.Tabs.ToolTip=Если это выбрано, символы табуляции будут заменены пробелами. -#}}} - -#{{{ Plugin Manager -Plugin.Manager.Title=Менеджер плагинов -Plugin.Manager.Name.Column.Header=Имя -Plugin.Manager.Version.Column.Header=Версия -Plugin.Manager.Status.Column.Header=Статус -Plugin.Manager.Loaded.Status=Загружен -Plugin.Manager.Not.Loaded.Status=Не загружен -Plugin.Manager.Broken.Status=Ошибка -#}}} - -#{{{ Menu Items - -File.Menu=Файл -Edit.Menu=Правка -View.Menu=Вид -Tools.Menu=Инструменты -Help.Menu=Справка - - -#}}} - -#{{{ Action Labels -new-file.label=Новый -open-file.label=Открыть... -File.Recent=Ранее открытые файлы -File.Recent.None=Нэма нифигга -save-file.label=Сохранить -save-as.label=Сохранить как... -reload-file.label=Открыть еще раз -File.Recent=Ранее открытые файлы -close-file.label=Закрыть -close-all.label=Закрыть все -exit.label=Выход - -undo.label=Отменить -redo.label=Повторить -cut.label=Вырезать -copy.label=Копировать -paste.label=Вставить -find.label=Искать... -findnext.label=Искать далее - -general-options.label=Глобальные опции... -document-options.label=Опции документа... -plugin-manager.label=Менеджер плагинов... -validation-errors.label=Ошибки подтверждения... -about-jsxe.label=О программе jsXe... - -#}}} - -#{{{ Messages - -DocumentView.Open.Message="Не могу открыть буффер в каком-либо из установленных document view-ов" - -#{0} file name -DocumentBuffer.Reload.Message={0} не сохранен!\n Вы потеряете все несохраненные изменения если продолжите!\n\n Продолжить? Вам не нужны эти несохраненные данные, в самом деле? -DocumentBuffer.Reload.Message.Title=Документ был изменен -DocumentBuffer.SaveAs.Message=Файл {0} уже существует. Записать новый файл поверх, зверски убив старый? -DocumentBuffer.SaveAs.Message.Title=Файл уже существует -DocumentBuffer.Close.Message={0} Не сохранен! Сохранить его прямо сейчас? -DocumentBuffer.Close.Message.Title=Несохраненные изменения - -#{0} file name -DocumentBuffer.Saved.Message={0} Сохранен -DocumentBuffer.Closed.Message={0} Закрыт -DocumentBuffer.Loaded.Message={0} Загружен -DocumentBuffer.Reloaded.Message={0} Загружен заново - -#{0} plugin name -DocumentView.Not.Found=Нету такого плагина со странным именем "{0}". - -#{{{ Plugin Load Messages - -# {0} plugin name -Plugin.Error.title=Ошибка плагина -Plugin.Error.List.message=Следующие плагины не могут быть загружены: -Plugin.Load.Already.Loaded=Плагин {0} уже загружен. -Plugin.Load.Wrong.Main.Class=Главный класс не является классом плагина. -Plugin.Load.No.Plugin.Class=Класс плагина не был определен. -Plugin.Load.No.Plugin.Name=Имя плагина не было определено. -Plugin.Load.No.Plugin.HR.Name=Для плагина не было определено такого имени,/n чтоб его мог прочитать нормальный человек (human-readable name). -Plugin.Load.No.Plugin.Version=Версия плагина не была определена. - -# {0} plugin name -# {1} requirement name -# {2} required version -# {3} found version -Plugin.Dependency.Message={0} требует {1} версии {2}, но обнаружена только версия {3}. -# {0} plugin name -# {1} requirement name -# {2} required version -Plugin.Dependency.Not.Found={0} требует {1} версии {2}, но {1} не удалось найти. -# {0} plugin name -# {1} requirement name -Plugin.Dependency.Not.Found2={0} требует {1} но {1} нигде не видать. -# {0} plugin name -# {1} invalid dependency -Plugin.Dependency.Invalid=У {0} есть неправильная зависимость: {1} -# {0} invalid version -Plugin.Dependency.Invalid.jsXe.Version=Неправильный номер версии jsXe: {0} -# {0} plugin name -# {1} requirement name -Plugin.Dependency.No.Version=Не могу загрузить плагин {0}, потому что у {1} не подписана версия. -# {0} plugin name -# {1} requirement name -Plugin.Dependency.Failed.Load={0} Требует плагин {1}, но этот самый {1} так и не удалось загрузить. - -#}}} - -#{{{ Error Messages -No.Xerces.Error.message={0} не обнаружен. jsXe требует Apache {0}. -No.Xerces.Error.title={0} не обнаружен. -IO.Error.title=ошибка ввода/вывода (I/O Error) -IO.Error.message=Произошла ошибка ввода/вывода -#}}} - -#}}} - -#{{{ Dialogs - -#{{{ Download resource dialog -xml.download-resource.title=Выкачиваем ресурсы с удаленного сервера... - -#{0} URL -xml.download-resource.message=Этот XML-файл зависит от ресурсов, которые расколожены\n\ - по следующему адресу в интернете:\n\ - \n\ - {0}\n\ - \n\ - Хотите ли вы чтобы плагин XML скачал ресурсы и закешировал их\n\ - для последующего использования?\n\ - \n\ - Если вы хотите соизволить разрешить мне скачивать ресурсы без спросу,\n\ - то отключите кеширование ресурсов в глобальных опциях jsXe. -#}}} - -#{{{ Dirty Files Dialog -DirtyFilesDialog.Dialog.Title=Несохраненные изменения -DirtyFilesDialog.Dialog.Message=В следующих файлах есть несохраненные изменения: -DirtyFilesDialog.Button.SelectAll.Title=Выбрать все -#DirtyFilesDialog.Button.SelectAll.ToolTip=Взять их фсехх! -DirtyFilesDialog.Button.SaveSelected.Title=Сохранить выбранные -#DirtyFilesDialog.Button.SaveSelected.ToolTip=Сохраняет, что тут еще можно сказать... те что выбраны, да... -DirtyFilesDialog.Button.DiscardSelected.Title=Убрать выделение -#DirtyFilesDialog.Button.DiscardSelected.ToolTip=Убирает выделение ;) -#}}} - -#{{{ Activity Log Dialog -activity-log.label = Лог активности -ActivityLogDialog.Dialog.Title = Лог активности -ActivityLogDialog.Dialog.Message = Содержимое лога активности: -#}}} - -#{{{ About dialag -about.title=О программе jsXe -about.message=Распространяется на условиях GNU General Public License\n\n\ - Активные разработчики:\n\ - \ \ \ \ Ian Lewis <Ian...@me...>\n\ - \ \ \ \ Trish Hartnett <tri...@us...>\n\n\ - Переводчики:\n\ - \ \ \ \ German (de) - Bianca Sh\u00f6en\n\ - \ \ \ \ German (de) - Dieter Steiner <spo...@gm...>\n\ - \ \ \ \ Swedish (sv) - Patrik Johansson <pa...@it...>\n\n\ - В прошлом учавствовали в разработке:\n\ - \ \ \ \ Aaron Flatten <afl...@us...>\n\ - \ \ \ \ Bilel Remmache <rb...@us...>\n\ - \ \ \ \ SVM <svm...@us...>\n\n\ - Страница проекта: http://jsxe.sourceforge.net/ -#}}} - -#{{{ Validation Errors Dialog -ValidationErrors.title=Ошибки подтверждения -ValidationErrors.message=Ошибки подтверждения -#}}} - -#}}} +# JSXE English properties file +# $Id: messages 1158 2006-08-18 18:42:18Z ian_lewis $ +# Maintained by Alexandr Gridnev (ale...@ya...) +#:mode=properties: +#:tabSize=4:indentSize=4:noTabs=true: +#:folding=explicit:collapseFolds=1: + +#{{{ common properties + +common.ok=Принять +common.cancel=Отменить +common.open=Открыть +common.save=Сохранить +common.save.as=Сохранить как +common.close=Закрыть +common.apply=Применить +common.more=Еще +common.insert=Вставить +common.add=Добавить +common.remove=Удалить +common.moveUp=Поднять +common.moveDown=Опустить +common.find=Искать + +common.ctrl=Ctrl +common.alt=Alt +common.shift=Shift +common.meta=Meta + +#}}} + +#{{{ XML Terminology + +#{{{ XML Node Types +xml.element=Элемент +xml.processing.instruction=Правило обработки +xml.cdata=Секция CDATA +xml.text=Текст +xml.entity.reference=Ссылка на сущность +xml.declaration=Объявление элемента +xml.notation=Замечание +xml.entity=Объявление сущности +xml.comment=Комментарий +xml.attribute=Свойство +xml.doctype=Тип документа +#}}} + +xml.attribute.value.short=Значение +xml.attribute.value=Значение свойства +xml.document=документ XML +xml.namespace=Пространство имен +xml.namespace.prefix=Префикс пространства имен +xml.namespace.prefix.short=Префикс +xml.namespace.decl=Объявление пространства имен +xml.doctypedef=Определение типа документа (DTD) +xml.doctype.name=Имя +xml.doctype.public=Публичный Id +xml.doctype.system=Системный Id +xml.schema=Схема XML +#}}} + +#{{{ Global Options +Global.Options.Dialog.Title=Глобальные опции +Global.Options.Title=Главное +Global.Options.Max.Recent.Files=Помнить ранее открытых файлов: +Global.Options.Max.Recent.Files.ToolTip=Максимальное количество ранее открытых файлов, про которые jsXe помнит и отображает в меню Файл->Ранее открытые файлы +Global.Options.network-off=Кешировать всегда, без спросу +Global.Options.network-cache=Кешировать удаленные файлы только спросив разрешения +Global.Options.network-always=Скачивать всегда, без спросу +Global.Options.network=Скачивание DTD и схемы: +Global.Options.Menu.Spill.Over=Меню выпадают после: +Global.Options.Undos.To.Remember=Запомнить действий: +Global.Options.Undos.To.Remember.ToolTip=<HTML>jsXe запомнит столько действий и потом их можно будет отменить.<BR> Однако он не может запомнить действия, выполненные после переключения видов</HTML> + +Shortcuts.Options.Title=Горячие клавиши +Shortcuts.Options.Select.Label=Редактировать горячие клавиши: +Shortcuts.Options.Shortcut=Горячая клавиша +Shortcuts.Options.Command=Команда + +Grab.Key.title=Нажмите клавишу +Grab.Key.caption=Нажмите клавишу для команды "{0}", а котом нажмите Принять. +Grab.Key.keyboard-test=Input the key strokes that are causing problems. +Grab.Key.assigned-to=Уже назначено для: {0} +Grab.Key.assigned-to.none=<ничего> +Grab.Key.clear=Очистить +Grab.Key.remove=Удалить текущее + +Grab.Key.remove-ask.title=Удалить клавишу? +Grab.Key.remove-ask.message=\ + Вы не назначили новую клавишу.\n\ + Вы что, всеръез решили лишить команду клавиши, правда? + +Grab.Key.duplicate-alt-shortcut.title=Две команды на клавишу +Grab.Key.duplicate-alt-shortcut.message=\ + Клавиша которую вы назначили уже занята за другой командой\n\ + Просьба выбрать другую, ато они подерутся. + +Grab.Key.duplicate-shortcut.title=Две команды на клавишу +Grab.Key.duplicate-shortcut.message=\ + Эта клавиша уже занята за\n\ + "{0}".\n\ + \n\ + Вы хотите отвергнуть это назначение? +#}}} + +#{{{ Document Options +Document.Options.Title=Опции документа XML +Document.Options.Message=Этот диалог управляет настройками только\n текущего документа. Чтобы изменить\n базовые настройки лезте в\n Инструменты->Глобальные опции. +Document.Options.Line.Separator=Разделитель строк: +Document.Options.Line.Separator.ToolTip=Разделитель строк. По умолчанию выбирается традиционный для вашей операционной системы. +Document.Options.Encoding=Кодировка: +Document.Options.Encoding.ToolTip=Кодировка, которую jsXe использует для записи текстовой инфы в файл. +Document.Options.Indent.Width=Ширина отступа: +Document.Options.Indent.Width.ToolTip=Ширина используемая при форматировании и отображении символов табуляции. +Document.Options.Format.XML=Форматировать выводимый XML +Document.Options.Format.XML.ToolTip=Если это выбрано, XML будет форматироваться автоматически. +Document.Options.Validate=Подтв. если доступны DTD или Схема +Document.Options.Validate.ToolTip=Если это выбрано, jsXe будет подтверждать (проверять?) документ XML. +Document.Options.Soft.Tabs=Мягкие табуляции (эмуляция пробелами) +Document.Options.Soft.Tabs.ToolTip=Если это выбрано, символы табуляции будут заменены пробелами. +#}}} + +#{{{ Plugin Manager +Plugin.Manager.Title=Менеджер плагинов +Plugin.Manager.Name.Column.Header=Имя +Plugin.Manager.Version.Column.Header=Версия +Plugin.Manager.Status.Column.Header=Статус +Plugin.Manager.Loaded.Status=Загружен +Plugin.Manager.Not.Loaded.Status=Не загружен +Plugin.Manager.Broken.Status=Ошибка +#}}} + +#{{{ Menu Items + +File.Menu=Файл +Edit.Menu=Правка +View.Menu=Вид +Tools.Menu=Инструменты +Help.Menu=Справка + + +#}}} + +#{{{ Action Labels +new-file.label=Новый +open-file.label=Открыть... +File.Recent=Ранее открытые файлы +File.Recent.None=Нэма нифигга +save-file.label=Сохранить +save-as.label=Сохранить как... +reload-file.label=Открыть еще раз +File.Recent=Ранее открытые файлы +close-file.label=Закрыть +close-all.label=Закрыть все +exit.label=Выход + +undo.label=Отменить +redo.label=Повторить +cut.label=Вырезать +copy.label=Копировать +paste.label=Вставить +find.label=Искать... +findnext.label=Искать далее + +general-options.label=Глобальные опции... +document-options.label=Опции документа... +plugin-manager.label=Менеджер плагинов... +validation-errors.label=Ошибки подтверждения... +about-jsxe.label=О программе jsXe... + +#}}} + +#{{{ Messages + +DocumentView.Open.Message="Не могу открыть буффер в каком-либо из установленных document view-ов" + +#{0} file name +DocumentBuffer.Reload.Message={0} не сохранен!\n Вы потеряете все несохраненные изменения если продолжите!\n\n Продолжить? Вам не нужны эти несохраненные данные, в самом деле? +DocumentBuffer.Reload.Message.Title=Документ был изменен +DocumentBuffer.SaveAs.Message=Файл {0} уже существует. Записать новый файл поверх, зверски убив старый? +DocumentBuffer.SaveAs.Message.Title=Файл уже существует +DocumentBuffer.Close.Message={0} Не сохранен! Сохранить его прямо сейчас? +DocumentBuffer.Close.Message.Title=Несохраненные изменения + +#{0} file name +DocumentBuffer.Saved.Message={0} Сохранен +DocumentBuffer.Closed.Message={0} Закрыт +DocumentBuffer.Loaded.Message={0} Загружен +DocumentBuffer.Reloaded.Message={0} Загружен заново + +#{0} plugin name +DocumentView.Not.Found=Нету такого плагина со странным именем "{0}". + +#{{{ Plugin Load Messages + +# {0} plugin name +Plugin.Error.title=Ошибка плагина +Plugin.Error.List.message=Следующие плагины не могут быть загружены: +Plugin.Load.Already.Loaded=Плагин {0} уже загружен. +Plugin.Load.Wrong.Main.Class=Главный класс не является классом плагина. +Plugin.Load.No.Plugin.Class=Класс плагина не был определен. +Plugin.Load.No.Plugin.Name=Имя плагина не было определено. +Plugin.Load.No.Plugin.HR.Name=Для плагина не было определено такого имени,/n чтоб его мог прочитать нормальный человек (human-readable name). +Plugin.Load.No.Plugin.Version=Версия плагина не была определена. + +# {0} plugin name +# {1} requirement name +# {2} required version +# {3} found version +Plugin.Dependency.Message={0} требует {1} версии {2}, но обнаружена только версия {3}. +# {0} plugin name +# {1} requirement name +# {2} required version +Plugin.Dependency.Not.Found={0} требует {1} версии {2}, но {1} не удалось найти. +# {0} plugin name +# {1} requirement name +Plugin.Dependency.Not.Found2={0} требует {1} но {1} нигде не видать. +# {0} plugin name +# {1} invalid dependency +Plugin.Dependency.Invalid=У {0} есть неправильная зависимость: {1} +# {0} invalid version +Plugin.Dependency.Invalid.jsXe.Version=Неправильный номер версии jsXe: {0} +# {0} plugin name +# {1} requirement name +Plugin.Dependency.No.Version=Не могу загрузить плагин {0}, потому что у {1} не подписана версия. +# {0} plugin name +# {1} requirement name +Plugin.Dependency.Failed.Load={0} Требует плагин {1}, но этот самый {1} так и не удалось загрузить. + +#}}} + +#{{{ Error Messages +No.Xerces.Error.message={0} не обнаружен. jsXe требует Apache {0}. +No.Xerces.Error.title={0} не обнаружен. +IO.Error.title=ошибка ввода/вывода (I/O Error) +IO.Error.message=Произошла ошибка ввода/вывода +#}}} + +#}}} + +#{{{ Dialogs + +#{{{ Download resource dialog +xml.download-resource.title=Выкачиваем ресурсы с удаленного сервера... + +#{0} URL +xml.download-resource.message=Этот XML-файл зависит от ресурсов, которые расколожены\n\ + по следующему адресу в интернете:\n\ + \n\ + {0}\n\ + \n\ + Хотите ли вы чтобы плагин XML скачал ресурсы и закешировал их\n\ + для последующего использования?\n\ + \n\ + Если вы хотите соизволить разрешить мне скачивать ресурсы без спросу,\n\ + то отключите кеширование ресурсов в глобальных опциях jsXe. +#}}} + +#{{{ Dirty Files Dialog +DirtyFilesDialog.Dialog.Title=Несохраненные изменения +DirtyFilesDialog.Dialog.Message=В следующих файлах есть несохраненные изменения: +DirtyFilesDialog.Button.SelectAll.Title=Выбрать все +#DirtyFilesDialog.Button.SelectAll.ToolTip=Взять их фсехх! +DirtyFilesDialog.Button.SaveSelected.Title=Сохранить выбранные +#DirtyFilesDialog.Button.SaveSelected.ToolTip=Сохраняет, что тут еще можно сказать... те что выбраны, да... +DirtyFilesDialog.Button.DiscardSelected.Title=Убрать выделение +#DirtyFilesDialog.Button.DiscardSelected.ToolTip=Убирает выделение ;) +#}}} + +#{{{ Activity Log Dialog +activity-log.label = Лог активности +ActivityLogDialog.Dialog.Title = Лог активности +ActivityLogDialog.Dialog.Message = Содержимое лога активности: +#}}} + +#{{{ About dialag +about.title=О программе jsXe +about.message=Распространяется на условиях GNU General Public License\n\n\ + Активные разработчики:\n\ + \ \ \ \ Ian Lewis <Ian...@me...>\n\ + \ \ \ \ Trish Hartnett <tri...@us...>\n\n\ + Переводчики:\n\ + \ \ \ \ German (de) - Bianca Sh\u00f6en\n\ + \ \ \ \ German (de) - Dieter Steiner <spo...@gm...>\n\ + \ \ \ \ Swedish (sv) - Patrik Johansson <pa...@it...>\n\n\ + В прошлом учавствовали в разработке:\n\ + \ \ \ \ Aaron Flatten <afl...@us...>\n\ + \ \ \ \ Bilel Remmache <rb...@us...>\n\ + \ \ \ \ SVM <svm...@us...>\n\n\ + Страница проекта: http://jsxe.sourceforge.net/ +#}}} + +#{{{ Validation Errors Dialog +ValidationErrors.title=Ошибки подтверждения +ValidationErrors.message=Ошибки подтверждения +#}}} + +#}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-02 17:47:35
|
Revision: 1229 http://svn.sourceforge.net/jsxe/?rev=1229&view=rev Author: ian_lewis Date: 2006-09-02 10:47:30 -0700 (Sat, 02 Sep 2006) Log Message: ----------- Changed windows new lines to unix newlines Modified Paths: -------------- tags/05pre3/jsxe/messages/messages.ru Modified: tags/05pre3/jsxe/messages/messages.ru =================================================================== --- tags/05pre3/jsxe/messages/messages.ru 2006-09-02 16:17:37 UTC (rev 1228) +++ tags/05pre3/jsxe/messages/messages.ru 2006-09-02 17:47:30 UTC (rev 1229) @@ -7,19 +7,19 @@ #{{{ common properties -common.ok=Принять -common.cancel=Отменить -common.open=Открыть -common.save=Сохранить -common.save.as=Сохранить как -common.close=Закрыть -common.apply=Применить -common.more=Еще -common.insert=Вставить -common.add=Добавить -common.remove=Удалить -common.moveUp=Поднять -common.moveDown=Опустить +common.ok=Принять +common.cancel=Отменить +common.open=Открыть +common.save=Сохранить +common.save.as=Сохранить как +common.close=Закрыть +common.apply=Применить +common.more=Еще +common.insert=Вставить +common.add=Добавить +common.remove=Удалить +common.moveUp=Поднять +common.moveDown=Опустить common.find=Искать common.ctrl=Ctrl @@ -32,126 +32,126 @@ #{{{ XML Terminology #{{{ XML Node Types -xml.element=Элемент -xml.processing.instruction=Правило обработки -xml.cdata=Секция CDATA -xml.text=Текст -xml.entity.reference=Ссылка на сущность -xml.declaration=Объявление элемента -xml.notation=Замечание -xml.entity=Объявление сущности -xml.comment=Комментарий -xml.attribute=Свойство -xml.doctype=Тип документа -#}}} - -xml.attribute.value.short=Значение -xml.attribute.value=Значение свойства -xml.document=документ XML +xml.element=Элемент +xml.processing.instruction=Правило обработки +xml.cdata=Секция CDATA +xml.text=Текст +xml.entity.reference=Ссылка на сущность +xml.declaration=Объявление элемента +xml.notation=Замечание +xml.entity=Объявление сущности +xml.comment=Комментарий +xml.attribute=Свойство +xml.doctype=Тип документа +#}}} + +xml.attribute.value.short=Значение +xml.attribute.value=Значение свойства +xml.document=документ XML xml.namespace=Пространство имен -xml.namespace.prefix=Префикс пространства имен -xml.namespace.prefix.short=Префикс -xml.namespace.decl=Объявление пространства имен -xml.doctypedef=Определение типа документа (DTD) -xml.doctype.name=Имя -xml.doctype.public=Публичный Id -xml.doctype.system=Системный Id -xml.schema=Схема XML -#}}} - -#{{{ Global Options -Global.Options.Dialog.Title=Глобальные опции -Global.Options.Title=Главное -Global.Options.Max.Recent.Files=Помнить ранее открытых файлов: -Global.Options.Max.Recent.Files.ToolTip=Максимальное количество ранее открытых файлов, про которые jsXe помнит и отображает в меню Файл->Ранее открытые файлы -Global.Options.network-off=Кешировать всегда, без спросу -Global.Options.network-cache=Кешировать удаленные файлы только спросив разрешения -Global.Options.network-always=Скачивать всегда, без спросу -Global.Options.network=Скачивание DTD и схемы: +xml.namespace.prefix=Префикс пространства имен +xml.namespace.prefix.short=Префикс +xml.namespace.decl=Объявление пространства имен +xml.doctypedef=Определение типа документа (DTD) +xml.doctype.name=Имя +xml.doctype.public=Публичный Id +xml.doctype.system=Системный Id +xml.schema=Схема XML +#}}} + +#{{{ Global Options +Global.Options.Dialog.Title=Глобальные опции +Global.Options.Title=Главное +Global.Options.Max.Recent.Files=Помнить ранее открытых файлов: +Global.Options.Max.Recent.Files.ToolTip=Максимальное количество ранее открытых файлов, про которые jsXe помнит и отображает в меню Файл->Ранее открытые файлы +Global.Options.network-off=Кешировать всегда, без спросу +Global.Options.network-cache=Кешировать удаленные файлы только спросив разрешения +Global.Options.network-always=Скачивать всегда, без спросу +Global.Options.network=Скачивание DTD и схемы: Global.Options.Menu.Spill.Over=Меню выпадают после: Global.Options.Undos.To.Remember=Запомнить действий: Global.Options.Undos.To.Remember.ToolTip=<HTML>jsXe запомнит столько действий и потом их можно будет отменить.<BR> Однако он не может запомнить действия, выполненные после переключения видов</HTML> -Shortcuts.Options.Title=Горячие клавиши -Shortcuts.Options.Select.Label=Редактировать горячие клавиши: -Shortcuts.Options.Shortcut=Горячая клавиша +Shortcuts.Options.Title=Горячие клавиши +Shortcuts.Options.Select.Label=Редактировать горячие клавиши: +Shortcuts.Options.Shortcut=Горячая клавиша Shortcuts.Options.Command=Команда -Grab.Key.title=Нажмите клавишу -Grab.Key.caption=Нажмите клавишу для команды "{0}", а котом нажмите Принять. -Grab.Key.keyboard-test=Input the key strokes that are causing problems. -Grab.Key.assigned-to=Уже назначено для: {0} -Grab.Key.assigned-to.none=<ничего> -Grab.Key.clear=Очистить +Grab.Key.title=Нажмите клавишу +Grab.Key.caption=Нажмите клавишу для команды "{0}", а котом нажмите Принять. +Grab.Key.keyboard-test=Input the key strokes that are causing problems. +Grab.Key.assigned-to=Уже назначено для: {0} +Grab.Key.assigned-to.none=<ничего> +Grab.Key.clear=Очистить Grab.Key.remove=Удалить текущее -Grab.Key.remove-ask.title=Удалить клавишу? -Grab.Key.remove-ask.message=\ - Вы не назначили новую клавишу.\n\ - Вы что, всеръез решили лишить команду клавиши, правда? - -Grab.Key.duplicate-alt-shortcut.title=Две команды на клавишу -Grab.Key.duplicate-alt-shortcut.message=\ - Клавиша которую вы назначили уже занята за другой командой\n\ - Просьба выбрать другую, ато они подерутся. - -Grab.Key.duplicate-shortcut.title=Две команды на клавишу -Grab.Key.duplicate-shortcut.message=\ - Эта клавиша уже занята за\n\ - "{0}".\n\ - \n\ - Вы хотите отвергнуть это назначение? -#}}} - -#{{{ Document Options -Document.Options.Title=Опции документа XML -Document.Options.Message=Этот диалог управляет настройками только\n текущего документа. Чтобы изменить\n базовые настройки лезте в\n Инструменты->Глобальные опции. -Document.Options.Line.Separator=Разделитель строк: -Document.Options.Line.Separator.ToolTip=Разделитель строк. По умолчанию выбирается традиционный для вашей операционной системы. -Document.Options.Encoding=Кодировка: +Grab.Key.remove-ask.title=Удалить клавишу? +Grab.Key.remove-ask.message=\ + Вы не назначили новую клавишу.\n\ + Вы что, всеръез решили лишить команду клавиши, правда? + +Grab.Key.duplicate-alt-shortcut.title=Две команды на клавишу +Grab.Key.duplicate-alt-shortcut.message=\ + Клавиша которую вы назначили уже занята за другой командой\n\ + Просьба выбрать другую, ато они подерутся. + +Grab.Key.duplicate-shortcut.title=Две команды на клавишу +Grab.Key.duplicate-shortcut.message=\ + Эта клавиша уже занята за\n\ + "{0}".\n\ + \n\ + Вы хотите отвергнуть это назначение? +#}}} + +#{{{ Document Options +Document.Options.Title=Опции документа XML +Document.Options.Message=Этот диалог управляет настройками только\n текущего документа. Чтобы изменить\n базовые настройки лезте в\n Инструменты->Глобальные опции. +Document.Options.Line.Separator=Разделитель строк: +Document.Options.Line.Separator.ToolTip=Разделитель строк. По умолчанию выбирается традиционный для вашей операционной системы. +Document.Options.Encoding=Кодировка: Document.Options.Encoding.ToolTip=Кодировка, которую jsXe использует для записи текстовой инфы в файл. -Document.Options.Indent.Width=Ширина отступа: -Document.Options.Indent.Width.ToolTip=Ширина используемая при форматировании и отображении символов табуляции. -Document.Options.Format.XML=Форматировать выводимый XML -Document.Options.Format.XML.ToolTip=Если это выбрано, XML будет форматироваться автоматически. -Document.Options.Validate=Подтв. если доступны DTD или Схема -Document.Options.Validate.ToolTip=Если это выбрано, jsXe будет подтверждать (проверять?) документ XML. -Document.Options.Soft.Tabs=Мягкие табуляции (эмуляция пробелами) -Document.Options.Soft.Tabs.ToolTip=Если это выбрано, символы табуляции будут заменены пробелами. -#}}} - -#{{{ Plugin Manager -Plugin.Manager.Title=Менеджер плагинов -Plugin.Manager.Name.Column.Header=Имя -Plugin.Manager.Version.Column.Header=Версия -Plugin.Manager.Status.Column.Header=Статус -Plugin.Manager.Loaded.Status=Загружен -Plugin.Manager.Not.Loaded.Status=Не загружен -Plugin.Manager.Broken.Status=Ошибка -#}}} - -#{{{ Menu Items - -File.Menu=Файл -Edit.Menu=Правка +Document.Options.Indent.Width=Ширина отступа: +Document.Options.Indent.Width.ToolTip=Ширина используемая при форматировании и отображении символов табуляции. +Document.Options.Format.XML=Форматировать выводимый XML +Document.Options.Format.XML.ToolTip=Если это выбрано, XML будет форматироваться автоматически. +Document.Options.Validate=Подтв. если доступны DTD или Схема +Document.Options.Validate.ToolTip=Если это выбрано, jsXe будет подтверждать (проверять?) документ XML. +Document.Options.Soft.Tabs=Мягкие табуляции (эмуляция пробелами) +Document.Options.Soft.Tabs.ToolTip=Если это выбрано, символы табуляции будут заменены пробелами. +#}}} + +#{{{ Plugin Manager +Plugin.Manager.Title=Менеджер плагинов +Plugin.Manager.Name.Column.Header=Имя +Plugin.Manager.Version.Column.Header=Версия +Plugin.Manager.Status.Column.Header=Статус +Plugin.Manager.Loaded.Status=Загружен +Plugin.Manager.Not.Loaded.Status=Не загружен +Plugin.Manager.Broken.Status=Ошибка +#}}} + +#{{{ Menu Items + +File.Menu=Файл +Edit.Menu=Правка View.Menu=Вид -Tools.Menu=Инструменты +Tools.Menu=Инструменты Help.Menu=Справка #}}} #{{{ Action Labels -new-file.label=Новый -open-file.label=Открыть... -File.Recent=Ранее открытые файлы -File.Recent.None=Нэма нифигга -save-file.label=Сохранить -save-as.label=Сохранить как... +new-file.label=Новый +open-file.label=Открыть... +File.Recent=Ранее открытые файлы +File.Recent.None=Нэма нифигга +save-file.label=Сохранить +save-as.label=Сохранить как... reload-file.label=Открыть еще раз File.Recent=Ранее открытые файлы -close-file.label=Закрыть -close-all.label=Закрыть все +close-file.label=Закрыть +close-all.label=Закрыть все exit.label=Выход undo.label=Отменить @@ -162,120 +162,120 @@ find.label=Искать... findnext.label=Искать далее -general-options.label=Глобальные опции... -document-options.label=Опции документа... -plugin-manager.label=Менеджер плагинов... -validation-errors.label=Ошибки подтверждения... +general-options.label=Глобальные опции... +document-options.label=Опции документа... +plugin-manager.label=Менеджер плагинов... +validation-errors.label=Ошибки подтверждения... about-jsxe.label=О программе jsXe... #}}} #{{{ Messages -DocumentView.Open.Message="Не могу открыть буффер в каком-либо из установленных document view-ов" - -#{0} file name -DocumentBuffer.Reload.Message={0} не сохранен!\n Вы потеряете все несохраненные изменения если продолжите!\n\n Продолжить? Вам не нужны эти несохраненные данные, в самом деле? -DocumentBuffer.Reload.Message.Title=Документ был изменен -DocumentBuffer.SaveAs.Message=Файл {0} уже существует. Записать новый файл поверх, зверски убив старый? -DocumentBuffer.SaveAs.Message.Title=Файл уже существует -DocumentBuffer.Close.Message={0} Не сохранен! Сохранить его прямо сейчас? -DocumentBuffer.Close.Message.Title=Несохраненные изменения - -#{0} file name -DocumentBuffer.Saved.Message={0} Сохранен -DocumentBuffer.Closed.Message={0} Закрыт -DocumentBuffer.Loaded.Message={0} Загружен -DocumentBuffer.Reloaded.Message={0} Загружен заново - -#{0} plugin name -DocumentView.Not.Found=Нету такого плагина со странным именем "{0}". - -#{{{ Plugin Load Messages - -# {0} plugin name -Plugin.Error.title=Ошибка плагина -Plugin.Error.List.message=Следующие плагины не могут быть загружены: +DocumentView.Open.Message="Не могу открыть буффер в каком-либо из установленных document view-ов" + +#{0} file name +DocumentBuffer.Reload.Message={0} не сохранен!\n Вы потеряете все несохраненные изменения если продолжите!\n\n Продолжить? Вам не нужны эти несохраненные данные, в самом деле? +DocumentBuffer.Reload.Message.Title=Документ был изменен +DocumentBuffer.SaveAs.Message=Файл {0} уже существует. Записать новый файл поверх, зверски убив старый? +DocumentBuffer.SaveAs.Message.Title=Файл уже существует +DocumentBuffer.Close.Message={0} Не сохранен! Сохранить его прямо сейчас? +DocumentBuffer.Close.Message.Title=Несохраненные изменения + +#{0} file name +DocumentBuffer.Saved.Message={0} Сохранен +DocumentBuffer.Closed.Message={0} Закрыт +DocumentBuffer.Loaded.Message={0} Загружен +DocumentBuffer.Reloaded.Message={0} Загружен заново + +#{0} plugin name +DocumentView.Not.Found=Нету такого плагина со странным именем "{0}". + +#{{{ Plugin Load Messages + +# {0} plugin name +Plugin.Error.title=Ошибка плагина +Plugin.Error.List.message=Следующие плагины не могут быть загружены: Plugin.Load.Already.Loaded=Плагин {0} уже загружен. -Plugin.Load.Wrong.Main.Class=Главный класс не является классом плагина. -Plugin.Load.No.Plugin.Class=Класс плагина не был определен. -Plugin.Load.No.Plugin.Name=Имя плагина не было определено. -Plugin.Load.No.Plugin.HR.Name=Для плагина не было определено такого имени,/n чтоб его мог прочитать нормальный человек (human-readable name). -Plugin.Load.No.Plugin.Version=Версия плагина не была определена. - -# {0} plugin name -# {1} requirement name -# {2} required version -# {3} found version -Plugin.Dependency.Message={0} требует {1} версии {2}, но обнаружена только версия {3}. -# {0} plugin name -# {1} requirement name -# {2} required version -Plugin.Dependency.Not.Found={0} требует {1} версии {2}, но {1} не удалось найти. -# {0} plugin name -# {1} requirement name -Plugin.Dependency.Not.Found2={0} требует {1} но {1} нигде не видать. -# {0} plugin name -# {1} invalid dependency -Plugin.Dependency.Invalid=У {0} есть неправильная зависимость: {1} -# {0} invalid version -Plugin.Dependency.Invalid.jsXe.Version=Неправильный номер версии jsXe: {0} -# {0} plugin name +Plugin.Load.Wrong.Main.Class=Главный класс не является классом плагина. +Plugin.Load.No.Plugin.Class=Класс плагина не был определен. +Plugin.Load.No.Plugin.Name=Имя плагина не было определено. +Plugin.Load.No.Plugin.HR.Name=Для плагина не было определено такого имени,/n чтоб его мог прочитать нормальный человек (human-readable name). +Plugin.Load.No.Plugin.Version=Версия плагина не была определена. + +# {0} plugin name # {1} requirement name -Plugin.Dependency.No.Version=Не могу загрузить плагин {0}, потому что у {1} не подписана версия. -# {0} plugin name -# {1} requirement name -Plugin.Dependency.Failed.Load={0} Требует плагин {1}, но этот самый {1} так и не удалось загрузить. - -#}}} - -#{{{ Error Messages -No.Xerces.Error.message={0} не обнаружен. jsXe требует Apache {0}. -No.Xerces.Error.title={0} не обнаружен. -IO.Error.title=ошибка ввода/вывода (I/O Error) -IO.Error.message=Произошла ошибка ввода/вывода -#}}} - -#}}} - -#{{{ Dialogs - -#{{{ Download resource dialog -xml.download-resource.title=Выкачиваем ресурсы с удаленного сервера... - -#{0} URL -xml.download-resource.message=Этот XML-файл зависит от ресурсов, которые расколожены\n\ - по следующему адресу в интернете:\n\ +# {2} required version +# {3} found version +Plugin.Dependency.Message={0} требует {1} версии {2}, но обнаружена только версия {3}. +# {0} plugin name +# {1} requirement name +# {2} required version +Plugin.Dependency.Not.Found={0} требует {1} версии {2}, но {1} не удалось найти. +# {0} plugin name +# {1} requirement name +Plugin.Dependency.Not.Found2={0} требует {1} но {1} нигде не видать. +# {0} plugin name +# {1} invalid dependency +Plugin.Dependency.Invalid=У {0} есть неправильная зависимость: {1} +# {0} invalid version +Plugin.Dependency.Invalid.jsXe.Version=Неправильный номер версии jsXe: {0} +# {0} plugin name +# {1} requirement name +Plugin.Dependency.No.Version=Не могу загрузить плагин {0}, потому что у {1} не подписана версия. +# {0} plugin name +# {1} requirement name +Plugin.Dependency.Failed.Load={0} Требует плагин {1}, но этот самый {1} так и не удалось загрузить. + +#}}} + +#{{{ Error Messages +No.Xerces.Error.message={0} не обнаружен. jsXe требует Apache {0}. +No.Xerces.Error.title={0} не обнаружен. +IO.Error.title=ошибка ввода/вывода (I/O Error) +IO.Error.message=Произошла ошибка ввода/вывода +#}}} + +#}}} + +#{{{ Dialogs + +#{{{ Download resource dialog +xml.download-resource.title=Выкачиваем ресурсы с удаленного сервера... + +#{0} URL +xml.download-resource.message=Этот XML-файл зависит от ресурсов, которые расколожены\n\ + по следующему адресу в интернете:\n\ \n\ - {0}\n\ - \n\ - Хотите ли вы чтобы плагин XML скачал ресурсы и закешировал их\n\ - для последующего использования?\n\ - \n\ - Если вы хотите соизволить разрешить мне скачивать ресурсы без спросу,\n\ - то отключите кеширование ресурсов в глобальных опциях jsXe. -#}}} - -#{{{ Dirty Files Dialog -DirtyFilesDialog.Dialog.Title=Несохраненные изменения -DirtyFilesDialog.Dialog.Message=В следующих файлах есть несохраненные изменения: -DirtyFilesDialog.Button.SelectAll.Title=Выбрать все -#DirtyFilesDialog.Button.SelectAll.ToolTip=Взять их фсехх! -DirtyFilesDialog.Button.SaveSelected.Title=Сохранить выбранные -#DirtyFilesDialog.Button.SaveSelected.ToolTip=Сохраняет, что тут еще можно сказать... те что выбраны, да... -DirtyFilesDialog.Button.DiscardSelected.Title=Убрать выделение -#DirtyFilesDialog.Button.DiscardSelected.ToolTip=Убирает выделение ;) -#}}} - -#{{{ Activity Log Dialog -activity-log.label = Лог активности -ActivityLogDialog.Dialog.Title = Лог активности -ActivityLogDialog.Dialog.Message = Содержимое лога активности: + {0}\n\ + \n\ + Хотите ли вы чтобы плагин XML скачал ресурсы и закешировал их\n\ + для последующего использования?\n\ + \n\ + Если вы хотите соизволить разрешить мне скачивать ресурсы без спросу,\n\ + то отключите кеширование ресурсов в глобальных опциях jsXe. #}}} +#{{{ Dirty Files Dialog +DirtyFilesDialog.Dialog.Title=Несохраненные изменения +DirtyFilesDialog.Dialog.Message=В следующих файлах есть несохраненные изменения: +DirtyFilesDialog.Button.SelectAll.Title=Выбрать все +#DirtyFilesDialog.Button.SelectAll.ToolTip=Взять их фсехх! +DirtyFilesDialog.Button.SaveSelected.Title=Сохранить выбранные +#DirtyFilesDialog.Button.SaveSelected.ToolTip=Сохраняет, что тут еще можно сказать... те что выбраны, да... +DirtyFilesDialog.Button.DiscardSelected.Title=Убрать выделение +#DirtyFilesDialog.Button.DiscardSelected.ToolTip=Убирает выделение ;) +#}}} + +#{{{ Activity Log Dialog +activity-log.label = Лог активности +ActivityLogDialog.Dialog.Title = Лог активности +ActivityLogDialog.Dialog.Message = Содержимое лога активности: +#}}} + #{{{ About dialag -about.title=О программе jsXe -about.message=Распространяется на условиях GNU General Public License\n\n\ +about.title=О программе jsXe +about.message=Распространяется на условиях GNU General Public License\n\n\ Активные разработчики:\n\ \ \ \ \ Ian Lewis <Ian...@me...>\n\ \ \ \ \ Trish Hartnett <tri...@us...>\n\n\ @@ -290,8 +290,8 @@ #}}} #{{{ Validation Errors Dialog -ValidationErrors.title=Ошибки подтверждения +ValidationErrors.title=Ошибки подтверждения ValidationErrors.message=Ошибки подтверждения #}}} -#}}} +#}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-02 16:17:52
|
Revision: 1228 http://svn.sourceforge.net/jsxe/?rev=1228&view=rev Author: ian_lewis Date: 2006-09-02 09:17:37 -0700 (Sat, 02 Sep 2006) Log Message: ----------- More compatibility changes Modified Paths: -------------- branches/jsxe2/src/net/sourceforge/jsxe/dom2/XMLDocument.java branches/jsxe2/src/net/sourceforge/jsxe/dom2/XMLElement.java branches/jsxe2/src/net/sourceforge/jsxe/dom2/XMLError.java branches/jsxe2/src/net/sourceforge/jsxe/dom2/XMLNode.java branches/jsxe2/src/net/sourceforge/jsxe/dom2/ls/XMLDocumentIORequest.java branches/jsxe2/src/net/sourceforge/jsxe/io/FileVFS.java branches/jsxe2/src/net/sourceforge/jsxe/util/MiscUtilities.java Modified: branches/jsxe2/src/net/sourceforge/jsxe/dom2/XMLDocument.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom2/XMLDocument.java 2006-09-02 15:59:17 UTC (rev 1227) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom2/XMLDocument.java 2006-09-02 16:17:37 UTC (rev 1228) @@ -154,7 +154,7 @@ * @param properties the properties to assign this XMLDocument on creation. * @throws IOException if there was a problem reading the document */ - public XMLDocument(String uri, InputStream reader, EntityResolver resolver, Map properties) throws IOException { + public XMLDocument(String uri, InputStream reader, EntityResolver resolver, Properties properties) throws IOException { m_entityResolver = resolver; setURI(uri); @@ -162,8 +162,8 @@ if (properties != null) { Iterator propertyNames = properties.keySet().iterator(); while (propertyNames.hasNext()) { - Object key = propertyNames.next(); - putProperty(key, properties.get(key)); + String key = propertyNames.next().toString(); + setProperty(key, properties.getProperty(key)); } } @@ -358,7 +358,7 @@ String o = m_properties.getProperty(key); if (o == null) { // Now try xml.document.<property> - o = jsXe.getProperty("xml.document." + name); + o = jsXe.getProperty("xml.document." + key); } return o; } @@ -380,10 +380,10 @@ * Returns the value of a boolean property. This method is thread-safe. * @param name The property name */ - public boolean getBooleanProperty(String name) { + public boolean getBooleanProperty(String name, boolean defValue) { String obj = getProperty(name); if (obj == null) { - return null; + return defValue; } return Boolean.valueOf(obj).booleanValue(); @@ -407,7 +407,7 @@ public int getIntegerProperty(String name, int defaultValue) { boolean defaultValueFlag; - String obj = getProperty(); + String obj = getProperty(name); if (obj == null) { return defaultValue; @@ -567,7 +567,7 @@ * @param data the text contents of the comment */ public XMLComment newCommentNode(String data) { - return new XMLComment(m_document.createCommentNode(data)); + return new XMLComment(m_document.createComment(data)); }//}}} //{{{ newProcessingInstruction() Modified: branches/jsxe2/src/net/sourceforge/jsxe/dom2/XMLElement.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom2/XMLElement.java 2006-09-02 15:59:17 UTC (rev 1227) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom2/XMLElement.java 2006-09-02 16:17:37 UTC (rev 1228) @@ -31,10 +31,6 @@ import net.sourceforge.jsxe.util.MiscUtilities; //}}} -//{{{ Swing classes -import javax.swing.text.*; -//}}} - //{{{ DOM classes import org.w3c.dom.*; import org.w3c.dom.events.*; @@ -42,6 +38,7 @@ //{{{ Java classes import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; //}}} @@ -84,7 +81,7 @@ for (int i=0; i<len; i++) { Node attr = attributes.item(i); XMLAttribute xmlAttr = (XMLAttribute)attr.getUserData(USER_DATA_KEY); - attrSet.put(xmlAttr.getName(), xmlAttr.getValue()); + attrSet.put(xmlAttr.getQualifiedName(), xmlAttr.getValue()); } return attrSet; }//}}} Modified: branches/jsxe2/src/net/sourceforge/jsxe/dom2/XMLError.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom2/XMLError.java 2006-09-02 15:59:17 UTC (rev 1227) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom2/XMLError.java 2006-09-02 16:17:37 UTC (rev 1228) @@ -53,23 +53,22 @@ }//}}} //{{{ getDocument() - public javax.swing.text.Document getDocument() { + public XMLDocument getDocument() { return m_document; }//}}} - //{{{ getElement() - public javax.swing.text.Element getElement(int index) { + //{{{ getChild() + public XMLNode getChild(int index) { return null; }//}}} - //{{{ getElementCount() - public int getElementCount() { + //{{{ getChildCount() + public int getChildCount() { return 0; }//}}} - //{{{ getName() - public String getName() { - //TODO + //{{{ getQualifiedName() + public String getQualifiedName() { if (m_warning) { return Messages.getMessage("common.warning"); } else { @@ -77,8 +76,8 @@ } }//}}} - //{{{ getParentElement() - public javax.swing.text.Element getParentElement() { + //{{{ getParentNode() + public XMLNode getParentNode() { return m_parent; }//}}} Modified: branches/jsxe2/src/net/sourceforge/jsxe/dom2/XMLNode.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom2/XMLNode.java 2006-09-02 15:59:17 UTC (rev 1227) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom2/XMLNode.java 2006-09-02 16:17:37 UTC (rev 1228) @@ -38,12 +38,11 @@ import org.w3c.dom.events.*; //}}} -//{{{ Swing classes -import javax.swing.text.*; +//{{{ Java classes +import java.util.ArrayList; +import java.util.Map; //}}} -import java.util.ArrayList; - //}}} /** @@ -139,8 +138,6 @@ } }//}}} - //{{{ javax.swing.text.Element methods - //{{{ getAttributes() /** * Attributes in an XMLNode are implemented as the attributes in a @@ -149,57 +146,83 @@ * DocumentView. * @return the attributes of the XMLElement node or null. */ - public AttributeSet getAttributes() { + public Map getAttributes() { //no attributes by default. Subclasses may override this behavior return null; }//}}} //{{{ getDocument() - public javax.swing.text.Document getDocument() { - return (javax.swing.text.Document)m_domNode.getOwnerDocument().getUserData(USER_DATA_KEY); + public XMLDocument getDocument() { + Document doc = m_domNode.getOwnerDocument(); + if (doc != null) { + return (XMLDocument)doc.getUserData(USER_DATA_KEY); + } else { + return null; + } }//}}} - //{{{ getElement() + //{{{ getChild() - public javax.swing.text.Element getElement(int index) { - return (javax.swing.text.Element)m_children.get(index); + public XMLNode getChild(int index) { + return (XMLNode)m_children.get(index); }//}}} - //{{{ getElementCount() + //{{{ getChildCount() - public int getElementCount() { + public int getChildCount() { return m_children.size(); }//}}} - //{{{ getElementIndex() - - public int getElementIndex(int offset) { + //{{{ getChildIndex() + /** + * Gets the child index closest to the given offset. The offset is + * specified relative to the beginning of the document. + * Returns -1 if the child is a leaf, otherwise returns the index of the + * child that best represents the given location. Returns 0 if the location + * is less than the start offset. Returns getChildCount() - 1 + * if the location is greater than or equal to the end offset. + * @param offset the specified offset >= 0 + */ + public int getChildIndex(int offset) { //TODO: implement offsets return 0; }//}}} //{{{ getEndOffset() - + /** + * Fetches the offset from the beginning of the document that this node + * ends at. If this node has children, this will be the end offset of the + * last child. As a document position, there is an implied backward bias. + * + * @return the ending offset > getStartOffset() and <= getDocument().getLength() + 1 + */ public int getEndOffset() { //TODO: implement offsets //TODO: should this be abstract? return 0; }//}}} - //{{{ getName() + //{{{ getQualifiedName() /** * Gets the qualified name of the node. This will be the namespace * prefix + ":" + the locale name. * @return the qualified name */ - public String getName() { + public String getQualifiedName() { return m_domNode.getNodeName(); }//}}} - //{{{ getParentElement() - - public javax.swing.text.Element getParentElement() { - return (javax.swing.text.Element)m_domNode.getParentNode().getUserData(USER_DATA_KEY); + //{{{ getParentNode() + /** + * Gets the parent node of this node. + */ + public XMLNode getParentNode() { + Node parent = m_domNode.getParentNode(); + if (parent != null) { + return (XMLNode)parent.getUserData(USER_DATA_KEY); + } else { + return null; + } }//}}} //{{{ getStartOffset() @@ -216,27 +239,30 @@ return m_domNode.hasChildNodes(); }//}}} - //}}} + //{{{ addEventListener() - //{{{ addEventListener() + //TODO: redo change listeners to be XMLNode friendly public void addEventListener(java.lang.String type, EventListener listener, boolean useCapture) { ((EventTarget)m_domNode).addEventListener(type, listener, useCapture); }//}}} //{{{ removeEventListener() + + //TODO: redo change listeners to be XMLNode friendly public void removeEventListener(java.lang.String type, EventListener listener, boolean useCapture) { ((EventTarget)m_domNode).removeEventListener(type, listener, useCapture); }//}}} //{{{ appendNode() public XMLNode appendNode(XMLNode newChild) throws DOMException { - if (((XMLDocument)getDocument()).isReadOnly()) { + XMLDocument doc = getDocument(); + if (doc != null && doc.isReadOnly()) { throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR, Messages.getMessage("XML.Read.Only.Node")); } if (newChild != null) { if (!(newChild instanceof XMLError)) { - XMLNode parent = (XMLNode)newChild.getParentElement(); + XMLNode parent = newChild.getParentNode(); if (parent != null) { parent.removeNode(newChild); } @@ -285,13 +311,14 @@ //{{{ insertNode() public XMLNode insertNode(XMLNode node, int index) throws DOMException { - if (((XMLDocument)getDocument()).isReadOnly()) { + XMLDocument doc = getDocument(); + if (doc != null && doc.isReadOnly()) { throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR, Messages.getMessage("XML.Read.Only.Node")); } if (node != null) { if (!(node instanceof XMLError)) { - XMLNode parent = (XMLNode)node.getParentElement(); + XMLNode parent = node.getParentNode(); if (parent != null) { parent.removeNode(node); } Modified: branches/jsxe2/src/net/sourceforge/jsxe/dom2/ls/XMLDocumentIORequest.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/dom2/ls/XMLDocumentIORequest.java 2006-09-02 15:59:17 UTC (rev 1227) +++ branches/jsxe2/src/net/sourceforge/jsxe/dom2/ls/XMLDocumentIORequest.java 2006-09-02 16:17:37 UTC (rev 1228) @@ -33,6 +33,7 @@ import net.sourceforge.jsxe.io.*; import net.sourceforge.jsxe.*; import net.sourceforge.jsxe.gui.TabbedView; +import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.dom2.XMLDocument; import net.sourceforge.jsxe.util.*; //}}} @@ -199,10 +200,10 @@ String[] args = { vfs.getFileName(path) }; setAbortable(true); - if (!buffer.isTemporary()) { - setStatus(Messages.getMessage("DocumentBuffer.Loading.Message",args)); - setProgressValue(0); - } + // if (!buffer.isTemporary()) { + // setStatus(Messages.getMessage("DocumentBuffer.Loading.Message",args)); + // setProgressValue(0); + // } path = vfs._canonPath(session,path,view); @@ -285,11 +286,11 @@ private Reader autodetect(InputStream in) throws IOException { in = new BufferedInputStream(in); - String encoding = buffer.getStringProperty(XMLDocument.ENCODING); + String encoding = buffer.getProperty(XMLDocument.ENCODING); if (!in.markSupported()) { Log.log(Log.WARNING,this,"Mark not supported: " + in); } else { - if(buffer.getBooleanProperty(XMLDocument.ENCODING_AUTODETECT)) { + if (buffer.getBooleanProperty(XMLDocument.ENCODING_AUTODETECT, true)) { in.mark(XML_PI_LENGTH); int b1 = in.read(); int b2 = in.read(); @@ -531,7 +532,7 @@ // 0-byte files should open using // the default line seperator" lineSeparator = jsXe.getProperty( - "xml.document."+XMLDocumen.LINE_SEPARATOR, + "xml.document."+XMLDocument.LINE_SEPARATOR, System.getProperty("line.separator")); } else { if (CRLF) { Modified: branches/jsxe2/src/net/sourceforge/jsxe/io/FileVFS.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/io/FileVFS.java 2006-09-02 15:59:17 UTC (rev 1227) +++ branches/jsxe2/src/net/sourceforge/jsxe/io/FileVFS.java 2006-09-02 16:17:37 UTC (rev 1228) @@ -101,9 +101,12 @@ //{{{ save() method public boolean save(TabbedView view, XMLDocument buffer, String path) { if (OperatingSystem.isUnix()) { - int permissions = getPermissions(buffer.getPath()); - Log.log(Log.DEBUG,this,buffer.getPath() + " has permissions 0" + int permissions = getPermissions(path); + Log.log(Log.DEBUG,this, path + " has permissions 0" + Integer.toString(permissions,8)); + // int permissions = getPermissions(buffer.getPath()); + // Log.log(Log.DEBUG,this,buffer.getPath() + " has permissions 0" + // + Integer.toString(permissions,8)); buffer.setIntegerProperty(PERMISSIONS_PROPERTY,permissions); } @@ -407,8 +410,8 @@ //{{{ Permission preservation code - /** Code borrowed from j text editor (http://www.armedbear.org) */ - /** I made some changes to make it support suid, sgid and sticky files */ + /** Code jEdit borrowed from j text editor (http://www.armedbear.org) */ + /** Slava made some changes to make it support suid, sgid and sticky files */ //{{{ getPermissions() method /** @@ -418,7 +421,7 @@ public static int getPermissions(String path) { int permissions = 0; - if (jsXe.getBooleanProperty("chmodDisabled")) { + if (jsXe.getBooleanProperty("chmodDisabled", true)) { return permissions; } @@ -456,7 +459,7 @@ * does nothing. */ public static void setPermissions(String path, int permissions) { - if (jsXe.getBooleanProperty("chmodDisabled")) + if (jsXe.getBooleanProperty("chmodDisabled", true)) return; if (permissions != 0) { Modified: branches/jsxe2/src/net/sourceforge/jsxe/util/MiscUtilities.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/util/MiscUtilities.java 2006-09-02 15:59:17 UTC (rev 1227) +++ branches/jsxe2/src/net/sourceforge/jsxe/util/MiscUtilities.java 2006-09-02 16:17:37 UTC (rev 1228) @@ -29,6 +29,9 @@ //{{{ Imports import net.sourceforge.jsxe.OperatingSystem; +import net.sourceforge.jsxe.io.*; +import net.sourceforge.jsxe.jsXe; + import javax.swing.text.Segment; import java.io.*; import java.util.*; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-02 15:59:24
|
Revision: 1227 http://svn.sourceforge.net/jsxe/?rev=1227&view=rev Author: ian_lewis Date: 2006-09-02 08:59:17 -0700 (Sat, 02 Sep 2006) Log Message: ----------- Updated Japanese translation Modified Paths: -------------- trunk/web/htdocs/content/ja/_global.php Modified: trunk/web/htdocs/content/ja/_global.php =================================================================== --- trunk/web/htdocs/content/ja/_global.php 2006-09-02 14:33:14 UTC (rev 1226) +++ trunk/web/htdocs/content/ja/_global.php 2006-09-02 15:59:17 UTC (rev 1227) @@ -10,6 +10,6 @@ 'Get Involved' => '参加情報', 'SourceForge Project' => 'SourceForge プロジェクト', 'jsXe with Japanese locale.' => 'jsXeは日本語も表示することができます。', - 'A screenshot showing the context dialog including cut/paste.' => '切り取りと、コピーと、貼り付けという機能が表せるスクリーンショット。' + 'A screenshot showing the context dialog including cut/paste.' => '切り取りと、コピーと、貼り付けという機能が表せる画面。' ); ?> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-02 14:33:24
|
Revision: 1226 http://svn.sourceforge.net/jsxe/?rev=1226&view=rev Author: ian_lewis Date: 2006-09-02 07:33:14 -0700 (Sat, 02 Sep 2006) Log Message: ----------- Added Japanese translation of the overview on the front page Added Paths: ----------- trunk/web/htdocs/content/ja/overview.php Added: trunk/web/htdocs/content/ja/overview.php =================================================================== --- trunk/web/htdocs/content/ja/overview.php (rev 0) +++ trunk/web/htdocs/content/ja/overview.php 2006-09-02 14:33:14 UTC (rev 1226) @@ -0,0 +1,9 @@ +<p>jsXe とは <b>J</b>ava <b>S</b>imple <b>X</b>ML <b>E</b>ditorという略語です。</p> +<p>jsXe は早くて、利用が簡単で、プラットフォーム独立のXMLエディターです。 + <a href="http://java.sun.com">Java</a>と Swingと、 + <a href="http://xml.apache.org/xerces2-j/">Xerces-J</a>で作成されて、 + ライセンスは<a href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a>. + jsXeの目的はユーザの簡単にXMLドキュメントを作成できるアプリケーションになることです。XMLの種類に対して、 + いろいろなビューで、この目的を達成します。</p> +<p>jsXeは参加者、開発者や、翻訳者や、品質保証者など、が必要です。jsXeがおもしろいと思いますなら、よかったら、 + <?php echo create_link('get-involved.php', '参加し方'); ?>を読んでください。</p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-02 01:45:48
|
Revision: 1225 http://svn.sourceforge.net/jsxe/?rev=1225&view=rev Author: ian_lewis Date: 2006-09-01 18:45:42 -0700 (Fri, 01 Sep 2006) Log Message: ----------- Support localization for the screenshots page Modified Paths: -------------- trunk/web/htdocs/content/ja/_global.php trunk/web/htdocs/screenshots.php Modified: trunk/web/htdocs/content/ja/_global.php =================================================================== --- trunk/web/htdocs/content/ja/_global.php 2006-09-02 01:16:20 UTC (rev 1224) +++ trunk/web/htdocs/content/ja/_global.php 2006-09-02 01:45:42 UTC (rev 1225) @@ -8,6 +8,8 @@ 'Download' => 'ダウンロード', 'Downloads' => 'ダウンロード', 'Get Involved' => '参加情報', - 'SourceForge Project' => 'SourceForge プロジェクト' + 'SourceForge Project' => 'SourceForge プロジェクト', + 'jsXe with Japanese locale.' => 'jsXeは日本語も表示することができます。', + 'A screenshot showing the context dialog including cut/paste.' => '切り取りと、コピーと、貼り付けという機能が表せるスクリーンショット。' ); ?> \ No newline at end of file Modified: trunk/web/htdocs/screenshots.php =================================================================== --- trunk/web/htdocs/screenshots.php 2006-09-02 01:16:20 UTC (rev 1224) +++ trunk/web/htdocs/screenshots.php 2006-09-02 01:45:42 UTC (rev 1225) @@ -54,7 +54,7 @@ ?> </td> <td> - A screenshot showing the context dialog including cut/paste + <?php echo T_("A screenshot showing the context dialog including cut/paste."); ?> <br/> (jsXe 0.4 pre3, Windows XP) @@ -70,10 +70,10 @@ ?> </td> <td> - A screenshot showing validation features. jsXe allows you to add nodes defined by DTD/Schema + <?php echo T_("A screenshot showing validation features. jsXe allows you to add nodes defined by DTD/Schema."); ?> <br/> - (jsXe 0.4 pre1 running on Windows XP) + (jsXe 0.4, Windows XP) </td> </tr> <tr> @@ -85,10 +85,10 @@ ?> </td> <td> - A screenshot showing the syntax highlighted source view. + <?php echo T_("A screenshot showing the syntax highlighted source view."); ?> <br/> - (jsXe 0.4 pre2 running on Windows XP) + (jsXe 0.4 pre2, Windows XP) </td> </tr> <tr> @@ -100,10 +100,10 @@ ?> </td> <td> - A screenshot of jsXe's options panel. + <?php echo T_("A screenshot of jsXe's options panel."); ?> <br/> - (jsXe 0.4 pre1 running on Windows XP) + (jsXe 0.4 pre1, Windows XP) </td> </tr> <tr> @@ -115,10 +115,10 @@ ?> </td> <td> - A screenshot of the edit node dialog. This dialog can be used to edit nodes defined in DTD/Schema + <?php echo T_("A screenshot of the edit node dialog. This dialog can be used to edit nodes defined in DTD/Schema."); ?> <br/> - (jsXe 0.4 pre1 running on Windows XP) + (jsXe 0.4 pre1, Windows XP) </td> </tr> </table> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-02 01:16:34
|
Revision: 1224 http://svn.sourceforge.net/jsxe/?rev=1224&view=rev Author: ian_lewis Date: 2006-09-01 18:16:20 -0700 (Fri, 01 Sep 2006) Log Message: ----------- Changed extention on content files to better describe their content removed obsolete news-header.html Modified Paths: -------------- trunk/web/htdocs/functions.php Added Paths: ----------- trunk/web/htdocs/content/en/downloads.php trunk/web/htdocs/content/en/features.php trunk/web/htdocs/content/en/get-involved.php trunk/web/htdocs/content/en/news.php trunk/web/htdocs/content/en/overview.php Removed Paths: ------------- trunk/web/htdocs/content/en/downloads.html trunk/web/htdocs/content/en/features.html trunk/web/htdocs/content/en/get-involved.html trunk/web/htdocs/content/en/news-header.html trunk/web/htdocs/content/en/news.html trunk/web/htdocs/content/en/overview.html trunk/web/htdocs/content/jp/ Deleted: trunk/web/htdocs/content/en/downloads.html =================================================================== --- trunk/web/htdocs/content/en/downloads.html 2006-09-02 01:12:52 UTC (rev 1223) +++ trunk/web/htdocs/content/en/downloads.html 2006-09-02 01:16:20 UTC (rev 1224) @@ -1,72 +0,0 @@ -<h3>Requirements</h3> - -<ul> -<li>jsXe requires Java 2 version 1.4.2</li> -<li>jsXe currently requires a specific version of Xerces-J to - run. Xerces-J 2.8.0 is required since some features are - implemented using the DOM level 3 interfaces that were in 2.6.0 - but were changed in later versions. Xerces-J 2.8.0 included in - the normal binary and source releases of jsXe for convenience. - You can also get Xerces-J 2.8.0 - <a href="http://archive.apache.org/dist/xml/xerces-j/">here</a>.</li> -</ul> - -<h3>Download</h3> - -<ul> - <li>The latest stable version of jsXe is <?php echo get_stable_download_link(); ?></li> - <li>The latest development version of jsXe is <?php echo get_devel_download_link(); ?></li> -</ul> - -<h3>Install</h3> - -<ul> - <li><b>0.4 beta</b> - <ul> - <li><p>To install and run jsXe simply unzip jsXe into the directory - of your choosing and run the included batch program or shell - script. You will need to make sure that the java runtime is in - your path. In the root of the jsXe install directory type the - following at a command prompt.</p> - <p>./bin/jsXe.sh</p> - <p>or</p> - <p>./bin/jsXe.bat</p> - <p>The batch program should be run in with the jsXe root - directory of as the working directory. So you can create a - shortcut to run jsXe by specifying the batch file as the program - to run and jsXe's root directory as the working directory.</p> - - <p>Ex.<br/> - Target: "C:\Program Files\jsXe\bin\jsXe.bat"<br/> - Start in: "C:\Program Files\jsXe\"</p> - - <p>You can also edit the JSXEDIR variable in the batch program - to be the directory where you installed jsXe and then the - 'Start in' directory can be anywhere.</p> - </li> - </ul> - </li> - <li><b>0.5 pre2</b> - <ul> - <li><b>Windows</b> - - <p>Just run jsXe using the jsXe.exe in the install directory. The - exe will detect your version of Java and run jsXe using that - version.</p> - </li> - - <li><b>Unix/Linux</b> - - <p>To run jsXe you should just run the java interpreter on the - jsXe.jar file. There is a shell script included in the - source tree for this purpose.</p> - - <p>./bin/jsXe.sh</p> - - <p>The shell script should be run in with the jsXe root directory of - as the working directory. You can also edit the JSXEDIR variable in - the shell script to be the directory where you installed jsXe.</p> - </li> - </ul> - </li> -</ul> \ No newline at end of file Copied: trunk/web/htdocs/content/en/downloads.php (from rev 1223, trunk/web/htdocs/content/en/downloads.html) =================================================================== --- trunk/web/htdocs/content/en/downloads.php (rev 0) +++ trunk/web/htdocs/content/en/downloads.php 2006-09-02 01:16:20 UTC (rev 1224) @@ -0,0 +1,72 @@ +<h3>Requirements</h3> + +<ul> +<li>jsXe requires Java 2 version 1.4.2</li> +<li>jsXe currently requires a specific version of Xerces-J to + run. Xerces-J 2.8.0 is required since some features are + implemented using the DOM level 3 interfaces that were in 2.6.0 + but were changed in later versions. Xerces-J 2.8.0 included in + the normal binary and source releases of jsXe for convenience. + You can also get Xerces-J 2.8.0 + <a href="http://archive.apache.org/dist/xml/xerces-j/">here</a>.</li> +</ul> + +<h3>Download</h3> + +<ul> + <li>The latest stable version of jsXe is <?php echo get_stable_download_link(); ?></li> + <li>The latest development version of jsXe is <?php echo get_devel_download_link(); ?></li> +</ul> + +<h3>Install</h3> + +<ul> + <li><b>0.4 beta</b> + <ul> + <li><p>To install and run jsXe simply unzip jsXe into the directory + of your choosing and run the included batch program or shell + script. You will need to make sure that the java runtime is in + your path. In the root of the jsXe install directory type the + following at a command prompt.</p> + <p>./bin/jsXe.sh</p> + <p>or</p> + <p>./bin/jsXe.bat</p> + <p>The batch program should be run in with the jsXe root + directory of as the working directory. So you can create a + shortcut to run jsXe by specifying the batch file as the program + to run and jsXe's root directory as the working directory.</p> + + <p>Ex.<br/> + Target: "C:\Program Files\jsXe\bin\jsXe.bat"<br/> + Start in: "C:\Program Files\jsXe\"</p> + + <p>You can also edit the JSXEDIR variable in the batch program + to be the directory where you installed jsXe and then the + 'Start in' directory can be anywhere.</p> + </li> + </ul> + </li> + <li><b>0.5 pre2</b> + <ul> + <li><b>Windows</b> + + <p>Just run jsXe using the jsXe.exe in the install directory. The + exe will detect your version of Java and run jsXe using that + version.</p> + </li> + + <li><b>Unix/Linux</b> + + <p>To run jsXe you should just run the java interpreter on the + jsXe.jar file. There is a shell script included in the + source tree for this purpose.</p> + + <p>./bin/jsXe.sh</p> + + <p>The shell script should be run in with the jsXe root directory of + as the working directory. You can also edit the JSXEDIR variable in + the shell script to be the directory where you installed jsXe.</p> + </li> + </ul> + </li> +</ul> \ No newline at end of file Deleted: trunk/web/htdocs/content/en/features.html =================================================================== --- trunk/web/htdocs/content/en/features.html 2006-09-02 01:12:52 UTC (rev 1223) +++ trunk/web/htdocs/content/en/features.html 2006-09-02 01:16:20 UTC (rev 1224) @@ -1,62 +0,0 @@ -<p>These are features currently implemented in the stable version of jsXe</p> - -<h3>General</h3> - -<ul> - <li>Written in Java, so it runs on Mac OS X, OS/2, Unix, VMS and Windows.</li> - <li>XML documents are edited using views. jsXe allows for - multiple views.</li> - <li>Syntax highlighted source view (version 0.4 beta)</li> - <li>Plugin interface that allows the addition of views - without re-compiling</li> - <li>Relatively good serialization of XML documents. - Supports the option of formatting serialized XML - documents or not formatting. Supports preserving - whitespace in text.</li> - <li>Allows opening and editing of multiple XML documents in - one open window.</li> - <li>Incremental parsing. Parsing the document and validation - will be done automatically without having to - continuously hit a validate/parse button.</li> - <li>Support for validation of an XML document using DTDs and - other forms of Schema.</li> - <li>DTD/Schema introspection. Information in the DTD/Schema is used to - allow users to add and edit nodes based on defined - within the DTD/Schema.</li> - <li>Internationalization. jsXe has support to easily - create translations of menus and messages into your native - language.</li> - <li>Built-in completion support for XML Schema, XHTML, XSLT, and - XSL:FO</li> -</ul> - -<h3>Tree View</h3> - -<ul> - <li>Adding, deleting, and editing of Nodes in an XML document using context menus.</li> - <li>Adding, deleting, and editing of attributes of an element node.</li> - <li>Drag and Drop of XML nodes within the Tree view and to text editors.</li> -</ul> - -<h3>Source View</h3> - -<ul> - <li>Text editing of the full XML source of any XML document</li> - <li>Cut, copy, and paste and other limited features.</li> -</ul> - - -<h2>Planned Features</h2> - -<p>These are features that have been added to the development version of jsXe or are planned for the future</p> - -<ul> - <li>A schema designer view that uses <a href="http://www.jgraph.com/">JGraph</a></li> - <li>A docbook editor view using <a href="http://vex.sourceforge.net/">Vex</a></li> - <li>An XHTML renderer using <a href="https://xhtmlrenderer.dev.java.net/">Flying Saucer</a></li> - <li>Support for transforming XML documents using XSLT stylesheets.</li> - <li>Support for Unlimited Undo (version 0.5 beta)</li> - <li>Tag completion using DTD/Schema introspection (version 0.5 beta)</li> - <li>Automatic insertion of closing tags (version 0.5 beta)</li> - <li>A help system using <a href="http://aurigadoc.sourceforge.net/">AurigaDoc</a> or <a href="http://docbook.sourceforge.net/">Docbook</a> (version 0.6 beta)</li> -</ul> \ No newline at end of file Copied: trunk/web/htdocs/content/en/features.php (from rev 1223, trunk/web/htdocs/content/en/features.html) =================================================================== --- trunk/web/htdocs/content/en/features.php (rev 0) +++ trunk/web/htdocs/content/en/features.php 2006-09-02 01:16:20 UTC (rev 1224) @@ -0,0 +1,62 @@ +<p>These are features currently implemented in the stable version of jsXe</p> + +<h3>General</h3> + +<ul> + <li>Written in Java, so it runs on Mac OS X, OS/2, Unix, VMS and Windows.</li> + <li>XML documents are edited using views. jsXe allows for + multiple views.</li> + <li>Syntax highlighted source view (version 0.4 beta)</li> + <li>Plugin interface that allows the addition of views + without re-compiling</li> + <li>Relatively good serialization of XML documents. + Supports the option of formatting serialized XML + documents or not formatting. Supports preserving + whitespace in text.</li> + <li>Allows opening and editing of multiple XML documents in + one open window.</li> + <li>Incremental parsing. Parsing the document and validation + will be done automatically without having to + continuously hit a validate/parse button.</li> + <li>Support for validation of an XML document using DTDs and + other forms of Schema.</li> + <li>DTD/Schema introspection. Information in the DTD/Schema is used to + allow users to add and edit nodes based on defined + within the DTD/Schema.</li> + <li>Internationalization. jsXe has support to easily + create translations of menus and messages into your native + language.</li> + <li>Built-in completion support for XML Schema, XHTML, XSLT, and + XSL:FO</li> +</ul> + +<h3>Tree View</h3> + +<ul> + <li>Adding, deleting, and editing of Nodes in an XML document using context menus.</li> + <li>Adding, deleting, and editing of attributes of an element node.</li> + <li>Drag and Drop of XML nodes within the Tree view and to text editors.</li> +</ul> + +<h3>Source View</h3> + +<ul> + <li>Text editing of the full XML source of any XML document</li> + <li>Cut, copy, and paste and other limited features.</li> +</ul> + + +<h2>Planned Features</h2> + +<p>These are features that have been added to the development version of jsXe or are planned for the future</p> + +<ul> + <li>A schema designer view that uses <a href="http://www.jgraph.com/">JGraph</a></li> + <li>A docbook editor view using <a href="http://vex.sourceforge.net/">Vex</a></li> + <li>An XHTML renderer using <a href="https://xhtmlrenderer.dev.java.net/">Flying Saucer</a></li> + <li>Support for transforming XML documents using XSLT stylesheets.</li> + <li>Support for Unlimited Undo (version 0.5 beta)</li> + <li>Tag completion using DTD/Schema introspection (version 0.5 beta)</li> + <li>Automatic insertion of closing tags (version 0.5 beta)</li> + <li>A help system using <a href="http://aurigadoc.sourceforge.net/">AurigaDoc</a> or <a href="http://docbook.sourceforge.net/">Docbook</a> (version 0.6 beta)</li> +</ul> \ No newline at end of file Deleted: trunk/web/htdocs/content/en/get-involved.html =================================================================== --- trunk/web/htdocs/content/en/get-involved.html 2006-09-02 01:12:52 UTC (rev 1223) +++ trunk/web/htdocs/content/en/get-involved.html 2006-09-02 01:16:20 UTC (rev 1224) @@ -1,103 +0,0 @@ -<p>jsXe needs developers to implement new features and fix bugs, - testers for testing jsXe, translators for translating messages and the - website, and web designers who are interested in updating the project's - website.</p> - -<p>Getting involved is fairly easy. There are a multitude of ways that - you can become involved in the project. The easiest is probably by - subscribing to the mailing lists, however there are many methods at - your disposal.</p> - -<p>Note: Contributers will be expected to give their real names.</p> - -<h3>Developers</h3> - -<p>If you are interested in working on jsXe, please - <a href="#lists">subscribe</a> - and send a mail to the jsxe-devel mailing list. The developers can help - get you started. Developers should know how to use SVN and have some - experience with Java swing or XML.</p> - -<h3>Testers</h3> - -<p>If you are interested in testing jsXe, please - <a href="#lists">subscribe</a> - and send a mail to the jsxe-devel mailing list. Testing will normally be - done on SVN and beta releases. Familiarity with - <a href="http://subversion.tigris.org/">SVN</a> and - <a href="http://ant.apache.org/">ant</a> is a plus since it will be needed - for testing code from the SVN repository.</p> - -<h3>Translators</h3> - -<p>If you are interested in translating for the jsXe project. Please - <a href="#lists">subscribe</a> - and send a mail to the jsxe-devel mailing list. For those who are - knowlegeable of SVN, you can check out the messages files from jsXe's - <a href="http://svn.sourceforge.net/viewcvs.cgi/jsxe/trunk/jsxe/">SVN repository</a>. - But even if you are not versed in SVN, the developers on the - mailing list can help get you started.</p> - -<h3>Web Developers</h3> - -<p>If you are interested in working on jsXe's webpage, please - <a href="#lists">subscribe</a> - and send a mail to the jsxe-devel mailing list. The developers can help - get you started. Web developers should have some knowledge of CSS and - PHP.</p> - -<h3>Users</h3> - -<p>Let us know what you think! - <a href="#lists">Subscribe</a> - to the jsxe-users mailing list and let us know what you think and what - features you would like to have implemented. Or you could submit a - <a href="http://sourceforge.net/tracker/?atid=488271&group_id=58584&func=browse">feature request</a>.</p> - -<h3><a name="lists">Mailing Lists</a></h3> - -<p>These three mailing lists will be low traffic.</p> - -<ul> - <li>jsXe-users (English): <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-users">Subscribe/Unsubscribe/Preferences</a>: a general discussion list for users of jsXe.</li> - <li>jsXe-devel (English): <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">Subscribe/Unsubscribe/Preferences</a>: a list for technical discussion regarding jsXe development.</li> - <li>jsXe-users (日本語): <a href="http://lists.sourceforge.jp/mailman/listinfo/jsxe-users">Subscribe/Unsubscribe/Preferences</a>: a general discussion list for users of jsXe.</li> - <li>jsXe-cvs: <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-cvs">Subscribe/Unsubscribe/Preferences</a>: a list where SVN commits are posted. Anyone subscribing to this list will be notified when changes are commited to SVN.</li> -</ul> - -<h3>Forums</h3> - -<p>To get support if you're having problems installing or running - jsXe please post to the Help forum. Any other comments and criticism - can be posted in the open discussion forum.</p> - -<ul> - <li><a href="http://sourceforge.net/forum/forum.php?forum_id=197160">Open Discussion</a></li> - <li><a href="http://sourceforge.net/forum/forum.php?forum_id=197161">Help</a></li> -</ul> - -<h3>IRC</h3> - -<p>Come to #jsxe on irc.freenode.net to talk with the developers.</p> - -<h3>Reporting Bugs</h3> - -<p>Reporting bugs is easy. Just submit a bug report on <a href="http://sourceforge.net/tracker/?atid=488268&group_id=58584&func=browse">jsXe's Bug Tracker</a>. - Just enter a description of the bug and if possible how to reproduce it - and it will be assigned and addressed by the project development team.</p> - -<h3>Feature Requests</h3> - -<p>Features requests are always welcome and will be addressed based on user - need and whether the feature fits with jsXe's vision. Feature - requests are easy too! Just submit a feature requests to - <a href="http://sourceforge.net/tracker/?atid=488271&group_id=58584&func=browse">jsXe's Feature Request Tracker</a>.</p> - -<h3>Patches</h3> - -<p>This is probably the best way to start becoming involved in the devolopment of jsXe. - You can submit patches using - <a href="http://sourceforge.net/tracker/?atid=488270&group_id=58584&func=browse">jsXe's Sourceforge Patch Tracker</a>. - Just provide the patch or code change itself and a discription of what - it does when you submit it. If your work is good then we'll add - you as developer with SVN access.</p> \ No newline at end of file Copied: trunk/web/htdocs/content/en/get-involved.php (from rev 1223, trunk/web/htdocs/content/en/get-involved.html) =================================================================== --- trunk/web/htdocs/content/en/get-involved.php (rev 0) +++ trunk/web/htdocs/content/en/get-involved.php 2006-09-02 01:16:20 UTC (rev 1224) @@ -0,0 +1,103 @@ +<p>jsXe needs developers to implement new features and fix bugs, + testers for testing jsXe, translators for translating messages and the + website, and web designers who are interested in updating the project's + website.</p> + +<p>Getting involved is fairly easy. There are a multitude of ways that + you can become involved in the project. The easiest is probably by + subscribing to the mailing lists, however there are many methods at + your disposal.</p> + +<p>Note: Contributers will be expected to give their real names.</p> + +<h3>Developers</h3> + +<p>If you are interested in working on jsXe, please + <a href="#lists">subscribe</a> + and send a mail to the jsxe-devel mailing list. The developers can help + get you started. Developers should know how to use SVN and have some + experience with Java swing or XML.</p> + +<h3>Testers</h3> + +<p>If you are interested in testing jsXe, please + <a href="#lists">subscribe</a> + and send a mail to the jsxe-devel mailing list. Testing will normally be + done on SVN and beta releases. Familiarity with + <a href="http://subversion.tigris.org/">SVN</a> and + <a href="http://ant.apache.org/">ant</a> is a plus since it will be needed + for testing code from the SVN repository.</p> + +<h3>Translators</h3> + +<p>If you are interested in translating for the jsXe project. Please + <a href="#lists">subscribe</a> + and send a mail to the jsxe-devel mailing list. For those who are + knowlegeable of SVN, you can check out the messages files from jsXe's + <a href="http://svn.sourceforge.net/viewcvs.cgi/jsxe/trunk/jsxe/">SVN repository</a>. + But even if you are not versed in SVN, the developers on the + mailing list can help get you started.</p> + +<h3>Web Developers</h3> + +<p>If you are interested in working on jsXe's webpage, please + <a href="#lists">subscribe</a> + and send a mail to the jsxe-devel mailing list. The developers can help + get you started. Web developers should have some knowledge of CSS and + PHP.</p> + +<h3>Users</h3> + +<p>Let us know what you think! + <a href="#lists">Subscribe</a> + to the jsxe-users mailing list and let us know what you think and what + features you would like to have implemented. Or you could submit a + <a href="http://sourceforge.net/tracker/?atid=488271&group_id=58584&func=browse">feature request</a>.</p> + +<h3><a name="lists">Mailing Lists</a></h3> + +<p>These three mailing lists will be low traffic.</p> + +<ul> + <li>jsXe-users (English): <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-users">Subscribe/Unsubscribe/Preferences</a>: a general discussion list for users of jsXe.</li> + <li>jsXe-devel (English): <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">Subscribe/Unsubscribe/Preferences</a>: a list for technical discussion regarding jsXe development.</li> + <li>jsXe-users (日本語): <a href="http://lists.sourceforge.jp/mailman/listinfo/jsxe-users">Subscribe/Unsubscribe/Preferences</a>: a general discussion list for users of jsXe.</li> + <li>jsXe-cvs: <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-cvs">Subscribe/Unsubscribe/Preferences</a>: a list where SVN commits are posted. Anyone subscribing to this list will be notified when changes are commited to SVN.</li> +</ul> + +<h3>Forums</h3> + +<p>To get support if you're having problems installing or running + jsXe please post to the Help forum. Any other comments and criticism + can be posted in the open discussion forum.</p> + +<ul> + <li><a href="http://sourceforge.net/forum/forum.php?forum_id=197160">Open Discussion</a></li> + <li><a href="http://sourceforge.net/forum/forum.php?forum_id=197161">Help</a></li> +</ul> + +<h3>IRC</h3> + +<p>Come to #jsxe on irc.freenode.net to talk with the developers.</p> + +<h3>Reporting Bugs</h3> + +<p>Reporting bugs is easy. Just submit a bug report on <a href="http://sourceforge.net/tracker/?atid=488268&group_id=58584&func=browse">jsXe's Bug Tracker</a>. + Just enter a description of the bug and if possible how to reproduce it + and it will be assigned and addressed by the project development team.</p> + +<h3>Feature Requests</h3> + +<p>Features requests are always welcome and will be addressed based on user + need and whether the feature fits with jsXe's vision. Feature + requests are easy too! Just submit a feature requests to + <a href="http://sourceforge.net/tracker/?atid=488271&group_id=58584&func=browse">jsXe's Feature Request Tracker</a>.</p> + +<h3>Patches</h3> + +<p>This is probably the best way to start becoming involved in the devolopment of jsXe. + You can submit patches using + <a href="http://sourceforge.net/tracker/?atid=488270&group_id=58584&func=browse">jsXe's Sourceforge Patch Tracker</a>. + Just provide the patch or code change itself and a discription of what + it does when you submit it. If your work is good then we'll add + you as developer with SVN access.</p> \ No newline at end of file Deleted: trunk/web/htdocs/content/en/news-header.html =================================================================== --- trunk/web/htdocs/content/en/news-header.html 2006-09-02 01:12:52 UTC (rev 1223) +++ trunk/web/htdocs/content/en/news-header.html 2006-09-02 01:16:20 UTC (rev 1224) @@ -1 +0,0 @@ -<h2>News</h2> \ No newline at end of file Deleted: trunk/web/htdocs/content/en/news.html =================================================================== --- trunk/web/htdocs/content/en/news.html 2006-09-02 01:12:52 UTC (rev 1223) +++ trunk/web/htdocs/content/en/news.html 2006-09-02 01:16:20 UTC (rev 1224) @@ -1,9 +0,0 @@ - <p><a href="http://sourceforge.net/forum/forum.php?forum_id=594064"><strong>jsXe 0.5 pre2 released!!</strong></a> <small class="date">2006-07-24 12:39 - <a href="http://sourceforge.net/projects/jsxe/">jsXe</a></small><br />The jsXe team is proud to announce the release of jsXe 0.5 pre2. This release is a bugfix release to fix a number of bugs that were released with 0.5 pre1. A NullPointerException being thrown by the source view as well as horizontal scrolling issues in the source view have been fixed. jsXe will also reload a file that is not-wellformed on disk properly.<br /><a href="http://sourceforge.net/forum/forum.php?forum_id=594064">Read More »</a></p> - <p><a href="http://sourceforge.net/forum/forum.php?forum_id=592911"><strong>jsXe 0.5 pre1 released!!</strong></a> <small class="date">2006-07-20 09:48 - <a href="http://sourceforge.net/projects/jsxe/">jsXe</a></small><br />The jsXe team is proud to release the newest unstable version of jsXe which will eventually become the 0.5 beta release. -<br /> -<br />This release contains support for user defined keyboard shortcuts. These shortcuts can be used to run actions defined by jsXe. This release also includes fixes for translation files. Translation files with non-ASCII characters should display properly now.<br /><a href="http://sourceforge.net/forum/forum.php?forum_id=592911">Read More »</a></p> - <p><a href="http://sourceforge.net/forum/forum.php?forum_id=575087"><strong>jsXe has migrated to SVN!!!</strong></a> <small class="date">2006-05-24 17:57 - <a href="http://sourceforge.net/projects/jsxe/">jsXe</a></small><br />The jsXe project team has just finished migrating from sourceforge's CVS services to sourceforge's SVN services. From now on users should use SVN to download the current working version of jsXe's source code. Please see <a href="http://sourceforge.net/svn/?group_id=58584" target="_new">http://sourceforge.net/svn/?group_id=58584</a> for instructions on how to download from SVN.<br /><a href="http://sourceforge.net/forum/forum.php?forum_id=575087">Read More »</a></p> - <p><a href="http://sourceforge.net/forum/forum.php?forum_id=565332"><strong>jsXe 0.4 beta released!</strong></a> <small class="date">2006-04-25 13:49 - <a href="http://sourceforge.net/projects/jsxe/">jsXe</a></small><br />The jsXe team is proud to announce the release of jsXe 0.4 beta! This improves on 0.3 beta by adding support for DTD/Schema validation and introspection, a syntax highlighted source view, full encoding support, and many, many gui changes. See below for all changes over 0.3 beta! -<br /><a href="http://sourceforge.net/forum/forum.php?forum_id=565332">Read More »</a></p> - <p><a href="http://sourceforge.net/forum/forum.php?forum_id=541741"><strong>jsXe 0.4 pre3 released!</strong></a> <small class="date">2006-02-19 13:45 - <a href="http://sourceforge.net/projects/jsxe/">jsXe</a></small><br />The jsXe team is pleased to annonce the release of version 0.4pre3. This release focused on adding support for viewing validation errors with documents that are validated against DTD and Schema. However, A number of UI enhancements were also added in this release including cut/copy/paste in the tree view and an activity log dialog for troubleshooting. The source view was made a bit easier to use by adding the ability to maintain indent and solving some problems with syntax highlighting. -<br /><a href="http://sourceforge.net/forum/forum.php?forum_id=541741">Read More »</a></p><p><a href="http://sourceforge.net/news/?group_id=58584">Site news archive »</a></p> \ No newline at end of file Copied: trunk/web/htdocs/content/en/news.php (from rev 1221, trunk/web/htdocs/content/en/news.html) =================================================================== --- trunk/web/htdocs/content/en/news.php (rev 0) +++ trunk/web/htdocs/content/en/news.php 2006-09-02 01:16:20 UTC (rev 1224) @@ -0,0 +1,9 @@ + <p><a href="http://sourceforge.net/forum/forum.php?forum_id=594064"><strong>jsXe 0.5 pre2 released!!</strong></a> <small class="date">2006-07-24 12:39 - <a href="http://sourceforge.net/projects/jsxe/">jsXe</a></small><br />The jsXe team is proud to announce the release of jsXe 0.5 pre2. This release is a bugfix release to fix a number of bugs that were released with 0.5 pre1. A NullPointerException being thrown by the source view as well as horizontal scrolling issues in the source view have been fixed. jsXe will also reload a file that is not-wellformed on disk properly.<br /><a href="http://sourceforge.net/forum/forum.php?forum_id=594064">Read More »</a></p> + <p><a href="http://sourceforge.net/forum/forum.php?forum_id=592911"><strong>jsXe 0.5 pre1 released!!</strong></a> <small class="date">2006-07-20 09:48 - <a href="http://sourceforge.net/projects/jsxe/">jsXe</a></small><br />The jsXe team is proud to release the newest unstable version of jsXe which will eventually become the 0.5 beta release. +<br /> +<br />This release contains support for user defined keyboard shortcuts. These shortcuts can be used to run actions defined by jsXe. This release also includes fixes for translation files. Translation files with non-ASCII characters should display properly now.<br /><a href="http://sourceforge.net/forum/forum.php?forum_id=592911">Read More »</a></p> + <p><a href="http://sourceforge.net/forum/forum.php?forum_id=575087"><strong>jsXe has migrated to SVN!!!</strong></a> <small class="date">2006-05-24 17:57 - <a href="http://sourceforge.net/projects/jsxe/">jsXe</a></small><br />The jsXe project team has just finished migrating from sourceforge's CVS services to sourceforge's SVN services. From now on users should use SVN to download the current working version of jsXe's source code. Please see <a href="http://sourceforge.net/svn/?group_id=58584" target="_new">http://sourceforge.net/svn/?group_id=58584</a> for instructions on how to download from SVN.<br /><a href="http://sourceforge.net/forum/forum.php?forum_id=575087">Read More »</a></p> + <p><a href="http://sourceforge.net/forum/forum.php?forum_id=565332"><strong>jsXe 0.4 beta released!</strong></a> <small class="date">2006-04-25 13:49 - <a href="http://sourceforge.net/projects/jsxe/">jsXe</a></small><br />The jsXe team is proud to announce the release of jsXe 0.4 beta! This improves on 0.3 beta by adding support for DTD/Schema validation and introspection, a syntax highlighted source view, full encoding support, and many, many gui changes. See below for all changes over 0.3 beta! +<br /><a href="http://sourceforge.net/forum/forum.php?forum_id=565332">Read More »</a></p> + <p><a href="http://sourceforge.net/forum/forum.php?forum_id=541741"><strong>jsXe 0.4 pre3 released!</strong></a> <small class="date">2006-02-19 13:45 - <a href="http://sourceforge.net/projects/jsxe/">jsXe</a></small><br />The jsXe team is pleased to annonce the release of version 0.4pre3. This release focused on adding support for viewing validation errors with documents that are validated against DTD and Schema. However, A number of UI enhancements were also added in this release including cut/copy/paste in the tree view and an activity log dialog for troubleshooting. The source view was made a bit easier to use by adding the ability to maintain indent and solving some problems with syntax highlighting. +<br /><a href="http://sourceforge.net/forum/forum.php?forum_id=541741">Read More »</a></p><p><a href="http://sourceforge.net/news/?group_id=58584">Site news archive »</a></p> \ No newline at end of file Deleted: trunk/web/htdocs/content/en/overview.html =================================================================== --- trunk/web/htdocs/content/en/overview.html 2006-09-02 01:12:52 UTC (rev 1223) +++ trunk/web/htdocs/content/en/overview.html 2006-09-02 01:16:20 UTC (rev 1224) @@ -1,15 +0,0 @@ -<p>jsXe is the <b>J</b>ava <b>S</b>imple <b>X</b>ML <b>E</b>ditor.</p> -<p>jsXe is a fast, intuitive, scalable, platform-independent XML editor. - It is written in <a href="http://java.sun.com">Java</a> using the Swing - toolkit, and <a href="http://xml.apache.org/xerces2-j/">Xerces-J</a> - and is released under the terms of the - <a href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a>. - It aims to provide end users and developers with an - intuitive way of creating XML documents that is simple enough to deal - with any XML document but flexible to allow the addition of support for - XML document formats through the use of plugins.</p> -<p>jsXe is currently in the beta stage and many intended features - are not currently implemented. If you are interesting in helping to - make jsXe a great editor by contributing your suggestions and needs or - if you are a developer and would like to contribute time and code check - out <?php echo create_link('get-involved.php', 'how to get involved'); ?>.</p> \ No newline at end of file Copied: trunk/web/htdocs/content/en/overview.php (from rev 1223, trunk/web/htdocs/content/en/overview.html) =================================================================== --- trunk/web/htdocs/content/en/overview.php (rev 0) +++ trunk/web/htdocs/content/en/overview.php 2006-09-02 01:16:20 UTC (rev 1224) @@ -0,0 +1,15 @@ +<p>jsXe is the <b>J</b>ava <b>S</b>imple <b>X</b>ML <b>E</b>ditor.</p> +<p>jsXe is a fast, intuitive, scalable, platform-independent XML editor. + It is written in <a href="http://java.sun.com">Java</a> using the Swing + toolkit, and <a href="http://xml.apache.org/xerces2-j/">Xerces-J</a> + and is released under the terms of the + <a href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a>. + It aims to provide end users and developers with an + intuitive way of creating XML documents that is simple enough to deal + with any XML document but flexible to allow the addition of support for + XML document formats through the use of plugins.</p> +<p>jsXe is currently in the beta stage and many intended features + are not currently implemented. If you are interesting in helping to + make jsXe a great editor by contributing your suggestions and needs or + if you are a developer and would like to contribute time and code check + out <?php echo create_link('get-involved.php', 'how to get involved'); ?>.</p> \ No newline at end of file Modified: trunk/web/htdocs/functions.php =================================================================== --- trunk/web/htdocs/functions.php 2006-09-02 01:12:52 UTC (rev 1223) +++ trunk/web/htdocs/functions.php 2006-09-02 01:16:20 UTC (rev 1224) @@ -128,9 +128,9 @@ // $data = fread($fh, filesize($file)); // fclose($fh); // echo $data; - $file = 'content/'.get_locale().'/'.$name.'.html'; + $file = 'content/'.get_locale().'/'.$name.'.php'; if (!file_exists($file)) { - $file = 'content/en/'.$name.'.html'; + $file = 'content/en/'.$name.'.php'; } include($file); }//}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-02 01:13:07
|
Revision: 1223 http://svn.sourceforge.net/jsxe/?rev=1223&view=rev Author: ian_lewis Date: 2006-09-01 18:12:52 -0700 (Fri, 01 Sep 2006) Log Message: ----------- More changes for internationalization Modified Paths: -------------- trunk/web/htdocs/content/en/downloads.html trunk/web/htdocs/content/en/features.html trunk/web/htdocs/content/en/get-involved.html trunk/web/htdocs/content/en/overview.html trunk/web/htdocs/content/ja/_global.php trunk/web/htdocs/downloads.php trunk/web/htdocs/features.php trunk/web/htdocs/footer.php trunk/web/htdocs/functions.php trunk/web/htdocs/get-involved.php trunk/web/htdocs/index.php trunk/web/htdocs/screenshots.php Added Paths: ----------- trunk/web/htdocs/images/anybrowser.png trunk/web/htdocs/images/css.png trunk/web/htdocs/images/xhtml.png Modified: trunk/web/htdocs/content/en/downloads.html =================================================================== --- trunk/web/htdocs/content/en/downloads.html 2006-09-01 23:33:32 UTC (rev 1222) +++ trunk/web/htdocs/content/en/downloads.html 2006-09-02 01:12:52 UTC (rev 1223) @@ -1,5 +1,3 @@ -<h2>Downloads</h2> - <h3>Requirements</h3> <ul> @@ -16,8 +14,8 @@ <h3>Download</h3> <ul> - <li>The latest stable version of jsXe is <a href="https://sourceforge.net/project/showfiles.php?group_id=58584&package_id=120827">0.4 beta</a></li> - <li>The latest development version of jsXe is <a href="https://sourceforge.net/project/showfiles.php?group_id=58584&package_id=54488">0.5 pre2</a></li> + <li>The latest stable version of jsXe is <?php echo get_stable_download_link(); ?></li> + <li>The latest development version of jsXe is <?php echo get_devel_download_link(); ?></li> </ul> <h3>Install</h3> Modified: trunk/web/htdocs/content/en/features.html =================================================================== --- trunk/web/htdocs/content/en/features.html 2006-09-01 23:33:32 UTC (rev 1222) +++ trunk/web/htdocs/content/en/features.html 2006-09-02 01:12:52 UTC (rev 1223) @@ -1,5 +1,3 @@ -<h2>Features</h2> - <p>These are features currently implemented in the stable version of jsXe</p> <h3>General</h3> Modified: trunk/web/htdocs/content/en/get-involved.html =================================================================== --- trunk/web/htdocs/content/en/get-involved.html 2006-09-01 23:33:32 UTC (rev 1222) +++ trunk/web/htdocs/content/en/get-involved.html 2006-09-02 01:12:52 UTC (rev 1223) @@ -1,5 +1,3 @@ -<h2>Getting Involved</h2> - <p>jsXe needs developers to implement new features and fix bugs, testers for testing jsXe, translators for translating messages and the website, and web designers who are interested in updating the project's @@ -15,7 +13,7 @@ <h3>Developers</h3> <p>If you are interested in working on jsXe, please - <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">subscribe</a> + <a href="#lists">subscribe</a> and send a mail to the jsxe-devel mailing list. The developers can help get you started. Developers should know how to use SVN and have some experience with Java swing or XML.</p> @@ -23,7 +21,7 @@ <h3>Testers</h3> <p>If you are interested in testing jsXe, please - <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">subscribe</a> + <a href="#lists">subscribe</a> and send a mail to the jsxe-devel mailing list. Testing will normally be done on SVN and beta releases. Familiarity with <a href="http://subversion.tigris.org/">SVN</a> and @@ -33,7 +31,7 @@ <h3>Translators</h3> <p>If you are interested in translating for the jsXe project. Please - <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">subscribe</a> + <a href="#lists">subscribe</a> and send a mail to the jsxe-devel mailing list. For those who are knowlegeable of SVN, you can check out the messages files from jsXe's <a href="http://svn.sourceforge.net/viewcvs.cgi/jsxe/trunk/jsxe/">SVN repository</a>. @@ -43,7 +41,7 @@ <h3>Web Developers</h3> <p>If you are interested in working on jsXe's webpage, please - <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">subscribe</a> + <a href="#lists">subscribe</a> and send a mail to the jsxe-devel mailing list. The developers can help get you started. Web developers should have some knowledge of CSS and PHP.</p> @@ -51,18 +49,19 @@ <h3>Users</h3> <p>Let us know what you think! - <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-users">Subscribe</a> + <a href="#lists">Subscribe</a> to the jsxe-users mailing list and let us know what you think and what features you would like to have implemented. Or you could submit a <a href="http://sourceforge.net/tracker/?atid=488271&group_id=58584&func=browse">feature request</a>.</p> -<h3>Mailing Lists</h3> +<h3><a name="lists">Mailing Lists</a></h3> <p>These three mailing lists will be low traffic.</p> <ul> - <li>jsXe-users: <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-users">Subscribe/Unsubscribe/Preferences</a>: a general discussion list for users of jsXe.</li> - <li>jsXe-devel: <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">Subscribe/Unsubscribe/Preferences</a>: a list for technical discussion regarding jsXe development.</li> + <li>jsXe-users (English): <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-users">Subscribe/Unsubscribe/Preferences</a>: a general discussion list for users of jsXe.</li> + <li>jsXe-devel (English): <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">Subscribe/Unsubscribe/Preferences</a>: a list for technical discussion regarding jsXe development.</li> + <li>jsXe-users (日本語): <a href="http://lists.sourceforge.jp/mailman/listinfo/jsxe-users">Subscribe/Unsubscribe/Preferences</a>: a general discussion list for users of jsXe.</li> <li>jsXe-cvs: <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-cvs">Subscribe/Unsubscribe/Preferences</a>: a list where SVN commits are posted. Anyone subscribing to this list will be notified when changes are commited to SVN.</li> </ul> Modified: trunk/web/htdocs/content/en/overview.html =================================================================== --- trunk/web/htdocs/content/en/overview.html 2006-09-01 23:33:32 UTC (rev 1222) +++ trunk/web/htdocs/content/en/overview.html 2006-09-02 01:12:52 UTC (rev 1223) @@ -1,5 +1,3 @@ -<h2>Overview</h2> - <p>jsXe is the <b>J</b>ava <b>S</b>imple <b>X</b>ML <b>E</b>ditor.</p> <p>jsXe is a fast, intuitive, scalable, platform-independent XML editor. It is written in <a href="http://java.sun.com">Java</a> using the Swing @@ -14,4 +12,4 @@ are not currently implemented. If you are interesting in helping to make jsXe a great editor by contributing your suggestions and needs or if you are a developer and would like to contribute time and code check - out <a href="get-involved.php">how to get involved</a></p> \ No newline at end of file + out <?php echo create_link('get-involved.php', 'how to get involved'); ?>.</p> \ No newline at end of file Modified: trunk/web/htdocs/content/ja/_global.php =================================================================== --- trunk/web/htdocs/content/ja/_global.php 2006-09-01 23:33:32 UTC (rev 1222) +++ trunk/web/htdocs/content/ja/_global.php 2006-09-02 01:12:52 UTC (rev 1223) @@ -1,6 +1,7 @@ <?php $trans['ja'] = array( - 'News' => 'ニュース', + 'Overview' => 'jsXeとは', + 'News' => 'ニュース', 'Features' => '機能概要', 'Screenshot' => 'スクリーンショット', 'Screenshots' => 'スクリーンショット', Modified: trunk/web/htdocs/downloads.php =================================================================== --- trunk/web/htdocs/downloads.php 2006-09-01 23:33:32 UTC (rev 1222) +++ trunk/web/htdocs/downloads.php 2006-09-02 01:12:52 UTC (rev 1223) @@ -6,7 +6,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo get_locale() ?>" lang="<?php echo get_locale() ?>"> <head> - <title>jsXe: Downloads</title> + <title>jsXe: <?php echo T_("Downloads"); ?></title> <?php include("meta.php") ?> </head> <body> @@ -18,6 +18,8 @@ <div id="mainBody"> + <h2><?php echo T_("Downloads"); ?></h2> + <?php get_content('downloads') ?> <?php include("footer.php") ?> Modified: trunk/web/htdocs/features.php =================================================================== --- trunk/web/htdocs/features.php 2006-09-01 23:33:32 UTC (rev 1222) +++ trunk/web/htdocs/features.php 2006-09-02 01:12:52 UTC (rev 1223) @@ -6,7 +6,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo get_locale() ?>" lang="<?php echo get_locale() ?>"> <head> - <title>jsXe: Features</title> + <title>jsXe: <?php echo T_("Features"); ?></title> <?php include("meta.php") ?> </head> <body> @@ -18,6 +18,8 @@ <div id="mainBody"> + <h2><?php echo T_("Features"); ?></h2> + <?php get_content('features'); ?> <?php include("footer.php") ?> Modified: trunk/web/htdocs/footer.php =================================================================== --- trunk/web/htdocs/footer.php 2006-09-01 23:33:32 UTC (rev 1222) +++ trunk/web/htdocs/footer.php 2006-09-02 01:12:52 UTC (rev 1223) @@ -1,11 +1,7 @@ <?php if( !defined('ROOT') ) die( 'Please, do not access this page directly.' ); ?> <div id="images"> - <a href="http://validator.w3.org/check/referer"><img title="This site is valid XHTML." alt="Valid XHTML 1.0 Transitional" src="http://www.ianlewis.org/images/xhtml.png"/></a> - <a href="http://jigsaw.w3.org/css-validator/validator?uri=http%3A%2F%2Fjsxe.sourceforge.net%2Fcss%2Fmain.css&usermedium=all"><img title="This site is valid CSS." alt="Valid CSS" src="http://www.ianlewis.org/images/css.png"/></a> - <img title="This site is usable in any web browser." alt="Any Browser!" src="http://www.ianlewis.org/images/anybrowser.png"/> - <!--<a href="http://sourceforge.net/"><img alt="SourceForge Logo" src="http://sourceforge.net/sflogo.php?group_id=58584"/></a> - <a href="http://validator.w3.org/check/referer"><img alt="Valid XHTML 1.0 Transitional" src="http://www.w3.org/Icons/valid-xhtml10"/></a> - <a href="http://jigsaw.w3.org/css-validator/validator?uri=http%3A%2F%2Fjsxe.sourceforge.net%2Fcss%2Fmain.css&usermedium=all"><img alt="Valid CSS" src="http://jigsaw.w3.org/css-validator/images/vcss"/></a> - <a href="http://www.jedit.org"><img alt="Made with jEdit" src="images/made-with-jedit-6.png"/></a>--> + <a href="http://validator.w3.org/check/referer"><?php echo get_image('xhtml.png', 'Valid XHTML 1.0 Transitional', 'This site is valid XHTML.' ); ?></a> + <a href="http://jigsaw.w3.org/css-validator/validator?uri=http%3A%2F%2Fjsxe.sourceforge.net%2Fcss%2Fmain.css&usermedium=all"><?php echo get_image('css.png', 'Valid CSS', 'This site is valid CSS.'); ?></a> + <?php echo get_image('anybrowser.png', 'Any Browser!', 'This site is usable in any browser'); ?> </div> Modified: trunk/web/htdocs/functions.php =================================================================== --- trunk/web/htdocs/functions.php 2006-09-01 23:33:32 UTC (rev 1222) +++ trunk/web/htdocs/functions.php 2006-09-02 01:12:52 UTC (rev 1223) @@ -73,10 +73,10 @@ //{{{ get_image() -function get_image($image, $alt='') { +function get_image($image, $alt='', $title='') { $location = 'http://jsxe.sourceforge.net/images/'.$image; // $location = 'http://www.ianlewis.org/jsxetest/images/'.$image; - return '<img src="'.$location.'" alt="'.$alt.'"/>'; + return '<img src="'.$location.'" alt="'.T_($alt).'" title="'.T_($title).'"/>'; }//}}} //{{{ create_link() @@ -120,40 +120,21 @@ //{{{ get_content() function get_content( $name ) { + // $file = 'content/'.get_locale().'/'.$name.'.html'; + // if (!file_exists($file)) { + // $file = 'content/en/'.$name.'.html'; + // } + // $fh = fopen($file, 'r'); + // $data = fread($fh, filesize($file)); + // fclose($fh); + // echo $data; $file = 'content/'.get_locale().'/'.$name.'.html'; if (!file_exists($file)) { $file = 'content/en/'.$name.'.html'; } - $fh = fopen($file, 'r'); - $data = fread($fh, filesize($file)); - fclose($fh); - echo $data; + include($file); }//}}} -//{{{ get_news() - -function get_news() { - - $file = 'content/'.get_locale().'/news-header.html'; - if (!file_exists($file)) { - $file = 'content/en/news-header.html'; - } - $fh = fopen($file, 'r'); - $header = fread($fh, filesize($file)); - fclose($fh); - - $file = 'content/'.get_locale().'/news.html'; - if (!file_exists($file)) { - $file = 'content/en/news.html'; - } - $fh = fopen($file, 'r'); - $data = fread($fh, filesize($file)); - fclose($fh); - - echo $header; - echo $data; -}//}}} - //{{{ T_() function T_( $string, $lang = '' ) { @@ -355,4 +336,28 @@ exit(0); }//}}} +//{{{ get_devel_download_link() + +function get_devel_download_link() { + return '<a href="https://sourceforge.net/project/showfiles.php?group_id=58584&package_id=54488">'.get_devel_version().'</a>'; +}//}}} + +//{{{ get_stable_download_link() + +function get_stable_download_link() { + return '<a href="https://sourceforge.net/project/showfiles.php?group_id=58584&package_id=120827">'.get_stable_version().'</a>'; +}//}}} + +//{{{ get_devel_version() + +function get_devel_version() { + return "0.4 beta"; +}//}}} + +//{{{ get_stable_version() + +function get_stable_version() { + return "0.4 beta"; +}//}}} + ?> \ No newline at end of file Modified: trunk/web/htdocs/get-involved.php =================================================================== --- trunk/web/htdocs/get-involved.php 2006-09-01 23:33:32 UTC (rev 1222) +++ trunk/web/htdocs/get-involved.php 2006-09-02 01:12:52 UTC (rev 1223) @@ -6,7 +6,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo get_locale() ?>" lang="<?php echo get_locale() ?>"> <head> - <title>jsXe: Getting Involved</title> + <title>jsXe: <?php echo T_("Get Involved"); ?></title> <?php include("meta.php") ?> </head> <body> @@ -18,6 +18,8 @@ <div id="mainBody"> + <h2><?php echo T_("Get Involved"); ?></h2> + <?php get_content('get-involved') ?> <?php include("footer.php") ?> Added: trunk/web/htdocs/images/anybrowser.png =================================================================== (Binary files differ) Property changes on: trunk/web/htdocs/images/anybrowser.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/web/htdocs/images/css.png =================================================================== (Binary files differ) Property changes on: trunk/web/htdocs/images/css.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/web/htdocs/images/xhtml.png =================================================================== (Binary files differ) Property changes on: trunk/web/htdocs/images/xhtml.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/web/htdocs/index.php =================================================================== --- trunk/web/htdocs/index.php 2006-09-01 23:33:32 UTC (rev 1222) +++ trunk/web/htdocs/index.php 2006-09-02 01:12:52 UTC (rev 1223) @@ -18,10 +18,14 @@ <div id="mainBody"> + <h2><?php echo T_("Overview"); ?></h2> + <?php get_content('overview'); ?> - <?php get_news() ?> + <h2><?php echo T_("News"); ?></h2> + <?php get_content('news') ?> + <?php include("footer.php") ?> </div> </body> Modified: trunk/web/htdocs/screenshots.php =================================================================== --- trunk/web/htdocs/screenshots.php 2006-09-01 23:33:32 UTC (rev 1222) +++ trunk/web/htdocs/screenshots.php 2006-09-02 01:12:52 UTC (rev 1223) @@ -6,7 +6,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo get_locale() ?>" lang="<?php echo get_locale() ?>"> <head> - <title>jsXe: Screenshots</title> + <title>jsXe: <?php echo T_("Screenshots"); ?></title> <?php include("meta.php") ?> </head> <body> @@ -25,11 +25,13 @@ } else { ?> - <h2>Screenshots</h2> + <h2><?php echo T_("Screenshots"); ?></h2> <table border="0" cellpadding="0" cellspacing="15" width="100%"> <tr> + <td> + <?php $params = array(); $params['id'] = '86758'; @@ -37,10 +39,10 @@ ?> </td> <td> - jsXe with Japanese locale. + <?php echo T_("jsXe with Japanese locale."); ?> <br/> - (jsXe 0.5 pre3 running on Ubuntu Linux) + (jsXe 0.5 pre3, Ubuntu Linux) </td> </tr> <tr> @@ -55,7 +57,7 @@ A screenshot showing the context dialog including cut/paste <br/> - (jsXe 0.4 pre3 running on Windows XP) + (jsXe 0.4 pre3, Windows XP) </td> </tr> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |