From: <ker...@us...> - 2010-02-28 16:35:46
|
Revision: 17404 http://jedit.svn.sourceforge.net/jedit/?rev=17404&view=rev Author: kerik-sf Date: 2010-02-28 16:35:38 +0000 (Sun, 28 Feb 2010) Log Message: ----------- namespace-aware XPath tool Modified Paths: -------------- plugins/XSLT/trunk/XSLT.props plugins/XSLT/trunk/docs/users-guide.xml plugins/XSLT/trunk/test/build.xml plugins/XSLT/trunk/test/xslt/XSLTPluginTest.java plugins/XSLT/trunk/test/xslt/XSLTPluginXPathTest.java plugins/XSLT/trunk/xslt/XPathTool.java plugins/XSLT/trunk/xslt/XSLTProcessor.java plugins/XSLT/trunk/xslt/XsltSettings.java Added Paths: ----------- plugins/XSLT/trunk/xslt/KeyValuePanel.java plugins/XSLT/trunk/xslt/KeyValueTableModel.java Removed Paths: ------------- plugins/XSLT/trunk/xslt/StylesheetParameterPanel.java plugins/XSLT/trunk/xslt/StylesheetParameterTableModel.java Modified: plugins/XSLT/trunk/XSLT.props =================================================================== --- plugins/XSLT/trunk/XSLT.props 2010-02-28 14:40:18 UTC (rev 17403) +++ plugins/XSLT/trunk/XSLT.props 2010-02-28 16:35:38 UTC (rev 17404) @@ -190,6 +190,25 @@ xpath.expression.label=XPath expression: xpath.expression.history-length=10 +xpath.ns.label=Namespace Context: + +xpath.ns.add.name=Add namespace-prefix binding +xpath.ns.add.short-desc=Add a namespace-prefix binding to use in the XPath expression +xpath.ns.add.small-icon=22x22/actions/list-add.png + +xpath.ns.remove.name=Remove namespace-prefix binding +xpath.ns.remove.short-desc=Remove a namespace-prefix binding +xpath.ns.remove.small-icon=22x22/actions/list-remove.png + +xpath.ns.table.name.header=Prefix +xpath.ns.table.value.header=Namespace + +xpath.ns.grab.name=Grab namespaces +xpath.ns.grab.short-desc=Collect all namespace bindings in the source document +xpath.ns.grab.small-icon=22x22/actions/document-reload2.png + +xpath.ns.grab.error-no-source=You must select a source document before grabbing namespace bindings + xpath.evaluate.button.tooltip=Evaluate XPath xpath.evaluate.button.icon=/xslt/icons/Evaluate.png @@ -206,7 +225,10 @@ xpath.source.radioselect.name=radioButtons xpath.source.radioselect.short-desc=Select source XML +xpath.error.no-source.message=You must select a source Document first ! +xpath.error.no-source.title=Missing input + xpath.result.data-type.label=Data type of result: xpath.result.data-type.node-set=node-set of size {0} xpath.result.data-type.not-node-set={0} Modified: plugins/XSLT/trunk/docs/users-guide.xml =================================================================== --- plugins/XSLT/trunk/docs/users-guide.xml 2010-02-28 14:40:18 UTC (rev 17403) +++ plugins/XSLT/trunk/docs/users-guide.xml 2010-02-28 16:35:38 UTC (rev 17404) @@ -287,6 +287,16 @@ using the page up and page down keys.</para> </listitem> <listitem> + <para>If your XPath expression uses namespace qualified names, + you may have to add namespace bindings in the <guilabel>Namespace Context</guilabel> + table. You may bind the same namespace to multiple prefixes, but one prefix + may only refer to one namespace. + </para> + <para>To grab the namespaces used in the source document, click on the + button next to <guibutton>Evaluate XPath</guibutton> in the middle of the + XPath tool dockable.</para> + </listitem> + <listitem> <para>Use the "Evaluate XPath" button, to evalute the the expression against the current buffer. The result information displayed includes: @@ -440,6 +450,8 @@ using double click : I use triple click all the time to select the entire text.</para></listitem> <listitem><para>New <emphasis>3-way mode</emphasis>, enabling an easy configuration of input,stylesheet and output, as well as a 3 buffers layout.</para></listitem> + <listitem><para>XPath tool is namespace aware ; button to grab namespace declarations + from source document.</para></listitem> </itemizedlist> </para> <para> Modified: plugins/XSLT/trunk/test/build.xml =================================================================== --- plugins/XSLT/trunk/test/build.xml 2010-02-28 14:40:18 UTC (rev 17403) +++ plugins/XSLT/trunk/test/build.xml 2010-02-28 16:35:38 UTC (rev 17404) @@ -87,7 +87,7 @@ <!-- this selector holds just one test. This is optional. --> <selector id="testcases.current"> - <filename name="xslt/XSLTThreeWayModeTest.java"/> + <filename name="xslt/XSLTPluginXPathTest.java"/> </selector> <!-- this selector controls which tests to run, set the refid to either @@ -96,7 +96,7 @@ defined, no tests will run. --> <selector id="junit.testcases"> <or> - <selector refid="testcases.current"/> + <selector refid="testcases.all"/> </or> </selector> Modified: plugins/XSLT/trunk/test/xslt/XSLTPluginTest.java =================================================================== --- plugins/XSLT/trunk/test/xslt/XSLTPluginTest.java 2010-02-28 14:40:18 UTC (rev 17403) +++ plugins/XSLT/trunk/test/xslt/XSLTPluginTest.java 2010-02-28 16:35:38 UTC (rev 17404) @@ -395,7 +395,7 @@ final FrameFixture xsltProcessor = setupProcessor(xml,xsl,"",1); // set the parameters - final JTableFixture parms = xsltProcessor.table("parameters"); + final JTableFixture parms = xsltProcessor.table("xslt.parameters"); while(parms.rowCount()>0) { parms.selectRows(0); Modified: plugins/XSLT/trunk/test/xslt/XSLTPluginXPathTest.java =================================================================== --- plugins/XSLT/trunk/test/xslt/XSLTPluginXPathTest.java 2010-02-28 14:40:18 UTC (rev 17403) +++ plugins/XSLT/trunk/test/xslt/XSLTPluginXPathTest.java 2010-02-28 16:35:38 UTC (rev 17404) @@ -60,7 +60,7 @@ TestUtils.afterClass(); } - //@Test + @Test public void testXPath() throws IOException{ File xml = new File(testData,"simple/source.xml"); @@ -70,7 +70,7 @@ final FrameFixture xpathTool = TestUtils.findFrameByTitle("XPath Tool"); - xpathTool.radioButton("xpath.select.buffer").click(); + xpathTool.radioButton("xpath.source.buffer").click(); GuiActionRunner.execute(new GuiTask(){ @@ -84,6 +84,41 @@ Pause.pause(1000); xpathTool.textBox("xpath.result.data-type").requireText("node-set of size 1"); xpathTool.textBox("xpath.result.value").requireText("world"); + + xpathTool.close(); } + @Test + public void testNS() throws IOException{ + File xml = new File(testData,"simple/transform.xsl"); + + TestUtils.openFile(xml.getPath()); + action("xpath-tool-float",1); + + + final FrameFixture xpathTool = TestUtils.findFrameByTitle("XPath Tool"); + + xpathTool.radioButton("xpath.source.buffer").click(); + + xpathTool.button("xpath.ns.grab").click(); + Pause.pause(2000); + + JTableFixture table = xpathTool.table("xpath.ns"); + table.cell(TableCell.row(0).column(0)).requireValue("xsl"); + table.cell(TableCell.row(0).column(1)).requireValue("http://www.w3.org/1999/XSL/Transform"); + + + GuiActionRunner.execute(new GuiTask(){ + protected void executeInEDT(){ + xpathTool.textBox("xpath.expression").targetCastedTo(JTextComponent.class).setText("//xsl:value-of"); + } + }); + + xpathTool.button("xpath.evaluate").click(); + + Pause.pause(5000); + xpathTool.textBox("xpath.result.data-type").requireText("node-set of size 1"); + xpathTool.textBox("xpath.result.xml-fragments").requireText("<xsl:value-of select=\".\"/>\n"); + xpathTool.close(); + } } Copied: plugins/XSLT/trunk/xslt/KeyValuePanel.java (from rev 17391, plugins/XSLT/trunk/xslt/StylesheetParameterPanel.java) =================================================================== --- plugins/XSLT/trunk/xslt/KeyValuePanel.java (rev 0) +++ plugins/XSLT/trunk/xslt/KeyValuePanel.java 2010-02-28 16:35:38 UTC (rev 17404) @@ -0,0 +1,294 @@ +/* + * KeyValuePanel.java - GUI panel for list of XSL parameters and XPath Namespaces + * + * Copyright (C) 2003 Robert McKinnon + * + * 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 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. + */ +package xslt; + +import org.gjt.sp.jedit.jEdit; +import org.gjt.sp.util.Log; + +import javax.swing.DefaultCellEditor; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.ListSelectionModel; +import javax.swing.JLabel; +import javax.swing.JToolBar; +import javax.swing.JPopupMenu; +import javax.swing.BorderFactory; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.event.TableModelEvent; +import javax.swing.event.TableModelListener; +import javax.swing.table.TableModel; +import javax.swing.table.TableCellEditor; +import java.awt.BorderLayout; +import java.awt.event.ActionEvent; +import java.awt.event.MouseListener; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.Map; + + +/** + * GUI panel for list of XSL parameters and XPath Namespaces + * + * @author Robert McKinnon - rob...@us... + */ +public class KeyValuePanel extends JPanel implements ListSelectionListener, TableModelListener { + + private KeyValueTableModel model; + private JTable parameterTable; + private XsltAction addKeyValueAction; + private XsltAction removeKeyValueAction; + private static final String NAME = ".name"; + private static final String VALUE = ".value"; + private boolean isResetting = false; + private final String name; + + public KeyValuePanel(String name) { + super(new BorderLayout()); + + this.name = name; + this.model = initKeyValueTableModel(); + this.model.addTableModelListener(this); + this.parameterTable = initKeyValueTable(this.model); + + addKeyValueAction = new AddKeyValueAction(); + removeKeyValueAction = new RemoveKeyValueAction(); + XsltAction[] actions = new XsltAction[]{addKeyValueAction, removeKeyValueAction}; + parameterTable.setComponentPopupMenu(XsltAction.initMenu(actions)); + + JLabel label = new JLabel(jEdit.getProperty(name+".label")); + JScrollPane tablePane = new JScrollPane(this.parameterTable); + JToolBar toolBar = initToolBar(); + toolBar.setBorder(BorderFactory.createEmptyBorder(0,6,0,2)); + + add(label, BorderLayout.NORTH); + add(tablePane, BorderLayout.CENTER); + add(toolBar, BorderLayout.EAST); + } + + + void stopEditing() { + if(parameterTable.isEditing()) { + TableCellEditor defaultEditor = parameterTable.getDefaultEditor(Object.class); + if(defaultEditor != null) { + defaultEditor.stopCellEditing(); + } + } + } + + + public void valueChanged(ListSelectionEvent e) { + boolean selectionExists = this.parameterTable.getSelectedRow() != -1; + this.removeKeyValueAction.setEnabled(selectionExists); + } + + + public void tableChanged(TableModelEvent e) { + int row = e.getFirstRow(); + logEvent(e.getType(), row); + + if(!isResetting) { + storeKeyValues(); + } + } + + + public void setKeyValues(String[] names, String[] values) { + this.isResetting = true; + this.model.clear(); + + for(int i = 0; i < names.length; i++) { + this.model.addKeyValue(names[i], values[i]); + } + + this.isResetting = false; + + storeKeyValues(); + } + + + private void logEvent(int event, int row) { + String eventText = ""; + + switch(event) { + case TableModelEvent.UPDATE: + eventText = "update "; + break; + case TableModelEvent.INSERT: + eventText = "insert "; + break; + case TableModelEvent.DELETE: + eventText = "delete "; + } + + Log.log(Log.DEBUG, this, eventText + "row " + row); + } + + + private void storeKeyValues() { + LinkedList nameList = new LinkedList(); + LinkedList valueList = new LinkedList(); + + for(int i = 0; i < this.model.getRowCount(); i++) { + String parameterName = this.model.getKeyValueName(i); + if(!parameterName.equals("")) { + nameList.add(parameterName); + valueList.add(this.model.getKeyValueValue(i)); + } + } + + PropertyUtil.setEnumeratedProperty(name+NAME, nameList); + PropertyUtil.setEnumeratedProperty(name+VALUE, valueList); + } + + + /** + * Returns a map with parameter name as the key, and parameter value as the value. + */ + public Map getMap() { + // get live parameters, even if we were still editing the value (didn't press ENTER) + stopEditing(); + Object[] names = PropertyUtil.getEnumeratedProperty(name+NAME).toArray(); + Object[] values = PropertyUtil.getEnumeratedProperty(name+VALUE).toArray(); + + Map parameterMap = new HashMap(); + + for(int i = 0; i < names.length; i++) { + parameterMap.put(names[i], values[i]); + } + + return parameterMap; + } + + + public int getCount() { + int rowCount = this.model.getRowCount(); + + if(rowCount > 0 && getName(rowCount - 1).equals("")) { + rowCount--; + } + + return rowCount; + } + + + public String getName(int index) { + return this.model.getKeyValueName(index); + } + + + public String getValue(int index) { + return this.model.getKeyValueValue(index); + } + + + private KeyValueTableModel initKeyValueTableModel() { + KeyValueTableModel model = new KeyValueTableModel(name); + + Object[] names = PropertyUtil.getEnumeratedProperty(name+NAME).toArray(); + Object[] values = PropertyUtil.getEnumeratedProperty(name+VALUE).toArray(); + + for(int i = 0; i < names.length; i++) { + model.addKeyValue((String)names[i], (String)values[i]); + } + + return model; + } + + + private JTable initKeyValueTable(TableModel model) { + JTable table = new JTable(model){ + /** + * lets the JTable fill the whole ViewPort, allowing for + * the context-menu to be shown even if there is no parameter yet + * {@link http://explodingpixels.wordpress.com/2008/10/05/making-a-jtable-fill-the-view-without-extension/} + */ + @Override + public boolean getScrollableTracksViewportHeight() { + return getParent() instanceof javax.swing.JViewport + && getPreferredSize().height < getParent().getHeight(); + } + }; + table.setName(name); + table.getSelectionModel().addListSelectionListener(this); + table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + DefaultCellEditor defaultCellEditor = ((DefaultCellEditor)table.getDefaultEditor(String.class)); + defaultCellEditor.setClickCountToStart(1); + return table; + } + + + private JToolBar initToolBar() { + removeKeyValueAction.setEnabled(false); + + JToolBar toolBar = new JToolBar(JToolBar.VERTICAL); + toolBar.setFloatable(false); + toolBar.add(addKeyValueAction.getButton()); + toolBar.add(removeKeyValueAction.getButton()); + return toolBar; + } + + + private class AddKeyValueAction extends XsltAction { + + AddKeyValueAction(){ + super(name+".add"); + } + + public void actionPerformed(ActionEvent e) { + KeyValuePanel.this.stopEditing(); + model.addKeyValue("", ""); + int lastRow = model.getRowCount() - 1; + + parameterTable.getColumnModel().getSelectionModel().setSelectionInterval(0, 0); + parameterTable.getSelectionModel().setSelectionInterval(lastRow, lastRow); + parameterTable.requestFocus(); + parameterTable.editCellAt(lastRow, 0); + } + + } + + + private class RemoveKeyValueAction extends XsltAction { + + RemoveKeyValueAction(){ + super(name+".remove"); + } + + public void actionPerformed(ActionEvent e) { + int selectedRow = parameterTable.getSelectedRow(); + if(selectedRow != -1) { + // fix an exception when removing a parameter when it is still + // being edited, then adding a parameter (stopEditing() is then + // called while the row has been removed) + KeyValuePanel.this.stopEditing(); + model.removeKeyValue(selectedRow); + + if(selectedRow != 0 && selectedRow < model.getRowCount()) { + parameterTable.getSelectionModel().setSelectionInterval(selectedRow, selectedRow); + parameterTable.requestFocus(); + } + } + } + + } + +} \ No newline at end of file Copied: plugins/XSLT/trunk/xslt/KeyValueTableModel.java (from rev 17391, plugins/XSLT/trunk/xslt/StylesheetParameterTableModel.java) =================================================================== --- plugins/XSLT/trunk/xslt/KeyValueTableModel.java (rev 0) +++ plugins/XSLT/trunk/xslt/KeyValueTableModel.java 2010-02-28 16:35:38 UTC (rev 17404) @@ -0,0 +1,238 @@ +/* + * KeyValueTableModel.java - Table model for XSL stylesheet parameters and XPath namespaces + * + * Copyright (c) 2003 Robert McKinnon + * + * 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 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. +*/ + +package xslt; + +import org.gjt.sp.jedit.jEdit; + +import javax.swing.table.AbstractTableModel; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +/** + * Table model for XSL stylesheet parameters and XPath namespaces + * + * @author Robert McKinnon + */ +public class KeyValueTableModel extends AbstractTableModel { + private final String[] columnNames; + + private static final int NAME_COL = 0; + private static final int VALUE_COL = 1; + + + /** List of instances of KeyValue */ + private List parameterList = new LinkedList(); + + + public KeyValueTableModel(String name) { + columnNames = new String[]{ + jEdit.getProperty(name+".table.name.header") + , jEdit.getProperty(name+".table.value.header")}; + } + + + /** + * Removes all of the elements from this model. The model will + * be empty after this call returns (unless it throws an exception). + */ + public void clear() { + int index = parameterList.size() - 1; + parameterList.clear(); + + if(index >= 0) { + fireTableRowsDeleted(0, index); + } + } + + + /** + * Implements method from interface {@link javax.swing.table.TableModel}. + */ + public int getColumnCount() { + return columnNames.length; + } + + + /** + * Implements method from interface {@link javax.swing.table.TableModel}. + */ + public int getRowCount() { + return parameterList.size(); + } + + + /** + * Implements method from interface {@link javax.swing.table.TableModel}. + */ + public Object getValueAt(int row, int col) { + KeyValue parameter = getKeyValue(row); + + if(col == NAME_COL) { + return parameter.getName(); + } else if(col == VALUE_COL) { + return parameter.getValue(); + } else { + throw new IllegalArgumentException(); + } + } + + + /** + * Implements method from interface {@link javax.swing.table.TableModel}. + */ + public boolean isCellEditable(int rowIndex, int columnIndex) { + return true; + } + + + private KeyValue getKeyValue(int row) { + return (KeyValue)parameterList.get(row); + } + + + public String getKeyValueName(int row) { + return getKeyValue(row).getName(); + } + + + public String getKeyValueValue(int row) { + return getKeyValue(row).getValue(); + } + + + /** + * Overrides method from class {@link AbstractTableModel}. + */ + public String getColumnName(int col) { + return columnNames[col]; + } + + + /** + * Overrides method from class {@link AbstractTableModel}. + */ + public Class getColumnClass(int col) { + return String.class; + } + + + /** + * Overrides method from class {@link AbstractTableModel}. + */ + public void setValueAt(Object value, int row, int col) { + KeyValue parameter = getKeyValue(row); + String text = (String)value; + + if(col == NAME_COL) { + if(text.equals("")) {// delete parameter + parameterList.remove(row); + fireTableRowsDeleted(row, row); + } else { + row = removeDuplicates(text, row); + parameter.setName(text); + fireTableCellUpdated(row, col); + } + + } else if(col == VALUE_COL) { + parameter.setValue(text); + fireTableCellUpdated(row, col); + } else { + throw new IllegalArgumentException(); + } + + } + + + public void removeKeyValue(int row) { + parameterList.remove(row); + fireTableRowsDeleted(row, row); + } + + + /** + * Adds a parameter to the table. + */ + public void addKeyValue(String name, String value) { + removeDuplicates("", -1); + + KeyValue parameter = new KeyValue(name, value); + parameterList.add(parameter); + int newRow = parameterList.size() - 1; + fireTableRowsInserted(newRow, newRow); + } + + + public int removeDuplicates(String newName, int row) { + Iterator iterator = parameterList.iterator(); + int i = 0; + + while(iterator.hasNext()) { + KeyValue parameter = (KeyValue)iterator.next(); + if(parameter.getName().equals(newName) && i != row) { + iterator.remove(); + row--; + fireTableRowsDeleted(i, i); + } + i++; + } + + return row; + } + + + /** + * Class to hold name and value information. + */ + private class KeyValue { + private String name; + private String value; + + + public KeyValue(String name, String value) { + this.name = name; + this.value = value; + } + + + public String getName() { + return name; + } + + + public String getValue() { + return value; + } + + + public void setName(String name) { + this.name = name; + } + + + public void setValue(String value) { + this.value = value; + } + + } + + +} \ No newline at end of file Deleted: plugins/XSLT/trunk/xslt/StylesheetParameterPanel.java =================================================================== --- plugins/XSLT/trunk/xslt/StylesheetParameterPanel.java 2010-02-28 14:40:18 UTC (rev 17403) +++ plugins/XSLT/trunk/xslt/StylesheetParameterPanel.java 2010-02-28 16:35:38 UTC (rev 17404) @@ -1,295 +0,0 @@ -/* - * StylesheetPanel.java - GUI panel for list of XSL parameters - * - * Copyright (C) 2003 Robert McKinnon - * - * 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 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. - */ -package xslt; - -import org.gjt.sp.jedit.jEdit; -import org.gjt.sp.util.Log; - -import javax.swing.DefaultCellEditor; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTable; -import javax.swing.ListSelectionModel; -import javax.swing.JLabel; -import javax.swing.JToolBar; -import javax.swing.JPopupMenu; -import javax.swing.BorderFactory; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; -import javax.swing.event.TableModelEvent; -import javax.swing.event.TableModelListener; -import javax.swing.table.TableModel; -import javax.swing.table.TableCellEditor; -import java.awt.BorderLayout; -import java.awt.event.ActionEvent; -import java.awt.event.MouseListener; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.Map; - - -/** - * GUI panel for list of XSL parameters - * - * @author Robert McKinnon - rob...@us... - */ -public class StylesheetParameterPanel extends JPanel implements ListSelectionListener, TableModelListener { - - private StylesheetParameterTableModel parameterTableModel; - private JTable parameterTable; - private XsltAction addParameterAction = new AddParameterAction(); - private XsltAction removeParameterAction = new RemoveParameterAction(); - private static final String PARAMETER_NAME = "xslt.parameter.name"; - private static final String PARAMETER_VALUE = "xslt.parameter.value"; - private boolean isResetting = false; - - - /** - * Constructor for the XSLTProcessor object. - */ - public StylesheetParameterPanel() { - super(new BorderLayout()); - - this.parameterTableModel = initParameterTableModel(); - this.parameterTableModel.addTableModelListener(this); - this.parameterTable = initParameterTable(this.parameterTableModel); - - XsltAction[] actions = new XsltAction[]{addParameterAction, removeParameterAction}; - parameterTable.setComponentPopupMenu(XsltAction.initMenu(actions)); - - JLabel label = new JLabel(jEdit.getProperty("xslt.parameters.label")); - JScrollPane tablePane = new JScrollPane(this.parameterTable); - JToolBar toolBar = initToolBar(); - toolBar.setBorder(BorderFactory.createEmptyBorder(0,6,0,2)); - - add(label, BorderLayout.NORTH); - add(tablePane, BorderLayout.CENTER); - add(toolBar, BorderLayout.EAST); - } - - - void stopEditing() { - if(parameterTable.isEditing()) { - TableCellEditor defaultEditor = parameterTable.getDefaultEditor(Object.class); - if(defaultEditor != null) { - defaultEditor.stopCellEditing(); - } - } - } - - - public void valueChanged(ListSelectionEvent e) { - boolean selectionExists = this.parameterTable.getSelectedRow() != -1; - this.removeParameterAction.setEnabled(selectionExists); - } - - - public void tableChanged(TableModelEvent e) { - int row = e.getFirstRow(); - logEvent(e.getType(), row); - - if(!isResetting) { - storeParameters(); - } - } - - - public void setParameters(String[] names, String[] values) { - this.isResetting = true; - this.parameterTableModel.clear(); - - for(int i = 0; i < names.length; i++) { - this.parameterTableModel.addParameter(names[i], values[i]); - } - - this.isResetting = false; - - storeParameters(); - } - - - private void logEvent(int event, int row) { - String eventText = ""; - - switch(event) { - case TableModelEvent.UPDATE: - eventText = "update "; - break; - case TableModelEvent.INSERT: - eventText = "insert "; - break; - case TableModelEvent.DELETE: - eventText = "delete "; - } - - Log.log(Log.DEBUG, this, eventText + "row " + row); - } - - - private void storeParameters() { - LinkedList nameList = new LinkedList(); - LinkedList valueList = new LinkedList(); - - for(int i = 0; i < this.parameterTableModel.getRowCount(); i++) { - String parameterName = this.parameterTableModel.getParameterName(i); - if(!parameterName.equals("")) { - nameList.add(parameterName); - valueList.add(this.parameterTableModel.getParameterValue(i)); - } - } - - PropertyUtil.setEnumeratedProperty(PARAMETER_NAME, nameList); - PropertyUtil.setEnumeratedProperty(PARAMETER_VALUE, valueList); - } - - - /** - * Returns a map with parameter name as the key, and parameter value as the value. - */ - public Map getParametersMap() { - // get live parameters, even if we were still editing the value (didn't press ENTER) - stopEditing(); - Object[] names = PropertyUtil.getEnumeratedProperty(PARAMETER_NAME).toArray(); - Object[] values = PropertyUtil.getEnumeratedProperty(PARAMETER_VALUE).toArray(); - - Map parameterMap = new HashMap(); - - for(int i = 0; i < names.length; i++) { - parameterMap.put(names[i], values[i]); - } - - return parameterMap; - } - - - public int getParametersCount() { - int rowCount = this.parameterTableModel.getRowCount(); - - if(rowCount > 0 && getParameterName(rowCount - 1).equals("")) { - rowCount--; - } - - return rowCount; - } - - - public String getParameterName(int index) { - return this.parameterTableModel.getParameterName(index); - } - - - public String getParameterValue(int index) { - return this.parameterTableModel.getParameterValue(index); - } - - - private StylesheetParameterTableModel initParameterTableModel() { - StylesheetParameterTableModel model = new StylesheetParameterTableModel(); - - Object[] names = PropertyUtil.getEnumeratedProperty(PARAMETER_NAME).toArray(); - Object[] values = PropertyUtil.getEnumeratedProperty(PARAMETER_VALUE).toArray(); - - for(int i = 0; i < names.length; i++) { - model.addParameter((String)names[i], (String)values[i]); - } - - return model; - } - - - private JTable initParameterTable(TableModel model) { - JTable table = new JTable(model){ - /** - * lets the JTable fill the whole ViewPort, allowing for - * the context-menu to be shown even if there is no parameter yet - * {@link http://explodingpixels.wordpress.com/2008/10/05/making-a-jtable-fill-the-view-without-extension/} - */ - @Override - public boolean getScrollableTracksViewportHeight() { - return getParent() instanceof javax.swing.JViewport - && getPreferredSize().height < getParent().getHeight(); - } - }; - table.setName("parameters"); - table.getSelectionModel().addListSelectionListener(this); - table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - DefaultCellEditor defaultCellEditor = ((DefaultCellEditor)table.getDefaultEditor(String.class)); - Log.log(Log.DEBUG, this, "" + defaultCellEditor.getClickCountToStart()); - defaultCellEditor.setClickCountToStart(1); - return table; - } - - - private JToolBar initToolBar() { - removeParameterAction.setEnabled(false); - - JToolBar toolBar = new JToolBar(JToolBar.VERTICAL); - toolBar.setFloatable(false); - toolBar.add(addParameterAction.getButton()); - toolBar.add(removeParameterAction.getButton()); - return toolBar; - } - - - private class AddParameterAction extends XsltAction { - - AddParameterAction(){ - super("xslt.parameters.add"); - } - - public void actionPerformed(ActionEvent e) { - StylesheetParameterPanel.this.stopEditing(); - parameterTableModel.addParameter("", ""); - int lastRow = parameterTableModel.getRowCount() - 1; - - parameterTable.getColumnModel().getSelectionModel().setSelectionInterval(0, 0); - parameterTable.getSelectionModel().setSelectionInterval(lastRow, lastRow); - parameterTable.requestFocus(); - parameterTable.editCellAt(lastRow, 0); - } - - } - - - private class RemoveParameterAction extends XsltAction { - - RemoveParameterAction(){ - super("xslt.parameters.remove"); - } - - public void actionPerformed(ActionEvent e) { - int selectedRow = parameterTable.getSelectedRow(); - if(selectedRow != -1) { - // fix an exception when removing a parameter when it is still - // being edited, then adding a parameter (stopEditing() is then - // called while the row has been removed) - StylesheetParameterPanel.this.stopEditing(); - parameterTableModel.removeParameter(selectedRow); - - if(selectedRow != 0 && selectedRow < parameterTableModel.getRowCount()) { - parameterTable.getSelectionModel().setSelectionInterval(selectedRow, selectedRow); - parameterTable.requestFocus(); - } - } - } - - } - -} \ No newline at end of file Deleted: plugins/XSLT/trunk/xslt/StylesheetParameterTableModel.java =================================================================== --- plugins/XSLT/trunk/xslt/StylesheetParameterTableModel.java 2010-02-28 14:40:18 UTC (rev 17403) +++ plugins/XSLT/trunk/xslt/StylesheetParameterTableModel.java 2010-02-28 16:35:38 UTC (rev 17404) @@ -1,237 +0,0 @@ -/* - * StylesheetParameterTableModel.java - Table model for XSL stylesheet parameters - * - * Copyright (c) 2003 Robert McKinnon - * - * 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 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. -*/ - -package xslt; - -import org.gjt.sp.jedit.jEdit; - -import javax.swing.table.AbstractTableModel; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; - -/** - * Table model for XSL stylesheet parameters. - * - * @author Robert McKinnon - */ -public class StylesheetParameterTableModel extends AbstractTableModel { - private static final String NAME = jEdit.getProperty("xslt.parameters.table.name.header"); - private static final String VALUE = jEdit.getProperty("xslt.parameters.table.value.header"); - private static final String[] COLUMN_NAMES = {NAME, VALUE}; - - private static final int NAME_COL = 0; - private static final int VALUE_COL = 1; - - - /** List of instances of Parameter */ - private List parameterList = new LinkedList(); - - - /** - * Removes all of the elements from this model. The model will - * be empty after this call returns (unless it throws an exception). - */ - public void clear() { - int index = parameterList.size() - 1; - parameterList.clear(); - - if(index >= 0) { - fireTableRowsDeleted(0, index); - } - } - - - /** - * Implements method from interface {@link javax.swing.table.TableModel}. - */ - public int getColumnCount() { - return COLUMN_NAMES.length; - } - - - /** - * Implements method from interface {@link javax.swing.table.TableModel}. - */ - public int getRowCount() { - return parameterList.size(); - } - - - /** - * Implements method from interface {@link javax.swing.table.TableModel}. - */ - public Object getValueAt(int row, int col) { - Parameter parameter = getParameter(row); - - if(col == NAME_COL) { - return parameter.getName(); - } else if(col == VALUE_COL) { - return parameter.getValue(); - } else { - throw new IllegalArgumentException(); - } - } - - - /** - * Implements method from interface {@link javax.swing.table.TableModel}. - */ - public boolean isCellEditable(int rowIndex, int columnIndex) { - return true; - } - - - private Parameter getParameter(int row) { - return (Parameter)parameterList.get(row); - } - - - public String getParameterName(int row) { - return getParameter(row).getName(); - } - - - public String getParameterValue(int row) { - return getParameter(row).getValue(); - } - - - /** - * Overrides method from class {@link AbstractTableModel}. - */ - public String getColumnName(int col) { - return COLUMN_NAMES[col]; - } - - - /** - * Overrides method from class {@link AbstractTableModel}. - */ - public Class getColumnClass(int col) { - return String.class; - } - - - /** - * Overrides method from class {@link AbstractTableModel}. - */ - public void setValueAt(Object value, int row, int col) { - Parameter parameter = getParameter(row); - String text = (String)value; - - if(col == NAME_COL) { - if(text.equals("")) {// delete parameter - parameterList.remove(row); - fireTableRowsDeleted(row, row); - } else { - row = removeDuplicates(text, row); - parameter.setName(text); - fireTableCellUpdated(row, col); - } - - } else if(col == VALUE_COL) { - parameter.setValue(text); - fireTableCellUpdated(row, col); - } else { - throw new IllegalArgumentException(); - } - - } - - - public void removeParameter(int row) { - parameterList.remove(row); - fireTableRowsDeleted(row, row); - } - - - /** - * Adds a parameter to the table. - */ - public void addParameter(String name, String value) { - removeDuplicates("", -1); - - Parameter parameter = new Parameter(name, value); - parameterList.add(parameter); - int newRow = parameterList.size() - 1; - fireTableRowsInserted(newRow, newRow); - } - - - public int removeDuplicates(String newName, int row) { - Iterator iterator = parameterList.iterator(); - int i = 0; - - while(iterator.hasNext()) { - Parameter parameter = (Parameter)iterator.next(); - if(parameter.getName().equals(newName) && i != row) { - iterator.remove(); - row--; - fireTableRowsDeleted(i, i); - } - i++; - } - - return row; - } - - - /** - * Class to hold parameter name and value information. - */ - private class Parameter { - private String name; - private String value; - - - public Parameter(String name, String value) { - this.name = name; - this.value = value; - } - - - public String getName() { - return name; - } - - - public String getValue() { - return value; - } - - - public void setName(String name) { - this.name = name; - } - - - public void setValue(String value) { - this.value = value; - } - - - public boolean hasNoName() { - return name.equals(""); - } - } - - -} \ No newline at end of file Modified: plugins/XSLT/trunk/xslt/XPathTool.java =================================================================== --- plugins/XSLT/trunk/xslt/XPathTool.java 2010-02-28 14:40:18 UTC (rev 17403) +++ plugins/XSLT/trunk/xslt/XPathTool.java 2010-02-28 16:35:38 UTC (rev 17404) @@ -43,6 +43,8 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.ArrayList; +import java.util.List; import javax.swing.ImageIcon; import javax.swing.JButton; @@ -67,9 +69,15 @@ import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; +import javax.xml.xpath.XPathFactory; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; + import org.apache.xpath.NodeSetDTM; import org.apache.xpath.XPathAPI; import org.apache.xpath.objects.XObject; +import org.apache.xml.utils.PrefixResolver; + import org.gjt.sp.jedit.buffer.JEditBuffer; import org.gjt.sp.jedit.Buffer; import org.gjt.sp.jedit.EBComponent; @@ -82,7 +90,16 @@ import org.gjt.sp.jedit.msg.BufferUpdate; import org.gjt.sp.jedit.search.CurrentBufferSet; import org.gjt.sp.jedit.search.SearchAndReplace; +import org.gjt.sp.jedit.GUIUtilities; +import org.gjt.sp.util.Log; + import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.traversal.DocumentTraversal; +import org.w3c.dom.traversal.NodeFilter; +import org.w3c.dom.traversal.NodeIterator; + import org.xml.sax.InputSource; import org.xml.sax.SAXException; @@ -96,13 +113,16 @@ ActionListener, DefaultFocusComponent, ItemListener { private View view; + private final XsltAction grabNSAction = new GrabNSAction(); private final BufferOrFileVFSSelector inputSelectionPanel; private final XPathExpressionPanel expressionPanel; + private final KeyValuePanel nsPanel; private final EvaluatePanel evaluatePanel = new EvaluatePanel(); private final JTextField dateTypeField = new JTextField(); private final ResultsPanel resultValuePanel = new ResultsPanel("xpath.result.value"); private final NodeSetResultsPanel nodeSetTablePanel = new NodeSetResultsPanel("xpath.result.node-set-summary"); private final XmlFragmentsPanel xmlFragmentsPanel = new XmlFragmentsPanel("xpath.result.xml-fragments"); + private JPanel dataTypePanel; private boolean autoCompleteEnabled; @@ -112,6 +132,8 @@ this.view = view; expressionPanel = new XPathExpressionPanel(view); + nsPanel = new KeyValuePanel("xpath.ns"); + inputSelectionPanel = new BufferOrFileVFSSelector(view,"xpath.source"); JPanel panel = new JPanel(new BorderLayout()); panel.add(new JLabel(jEdit.getProperty("xpath.result.data-type.label")), BorderLayout.NORTH); @@ -123,14 +145,15 @@ GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.HORIZONTAL; - gbc.gridy = 1; add(inputSelectionPanel, gbc); gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.BOTH; gbc.weightx = gbc.weighty = 1; gbc.gridy = 2; - add(expressionPanel, gbc); + + JSplitPane exprNSSplit = getSplitPane(expressionPanel,nsPanel,70); + add(exprNSSplit, gbc); gbc = new GridBagConstraints(); gbc.gridy = 3; @@ -157,7 +180,8 @@ public static Document parse(InputSource source) throws ParserConfigurationException, IOException, SAXException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false); - + factory.setNamespaceAware(true); + DocumentBuilder builder = factory.newDocumentBuilder(); builder.setEntityResolver(xml.Resolver.instance()); Document document = builder.parse(source); @@ -191,19 +215,23 @@ public void actionPerformed(ActionEvent event) { - try { - evaluateExpression(); - - } catch (IllegalStateException e) { - XSLTPlugin.processException(e, e.getMessage(), XPathTool.this); - } catch (SAXException e) { // parse problem - XSLTPlugin.processException(e, jEdit.getProperty("xpath.result.message.buffer-unparseable"), XPathTool.this); - } catch (IOException e) { // parse problem - XSLTPlugin.processException(e, jEdit.getProperty("xpath.result.message.buffer-unparseable"), XPathTool.this); - } catch (TransformerException e) { // evaluation problem - XSLTPlugin.processException(e, jEdit.getProperty("xpath.result.message.expression-unevaluateable"), XPathTool.this); - } catch (Exception e) { // catch-all - XSLTPlugin.processException(e, jEdit.getProperty("xpath.result.message.unkown-problem"), XPathTool.this); + if(!inputSelectionPanel.isSourceFileDefined()) { + GUIUtilities.message(this,"xpath.error.no-source",new Object[]{}); + } else { + try { + evaluateExpression(); + + } catch (IllegalStateException e) { + XSLTPlugin.processException(e, e.getMessage(), XPathTool.this); + } catch (SAXException e) { // parse problem + XSLTPlugin.processException(e, jEdit.getProperty("xpath.result.message.buffer-unparseable"), XPathTool.this); + } catch (IOException e) { // parse problem + XSLTPlugin.processException(e, jEdit.getProperty("xpath.result.message.buffer-unparseable"), XPathTool.this); + } catch (TransformerException e) { // evaluation problem + XSLTPlugin.processException(e, jEdit.getProperty("xpath.result.message.expression-unevaluateable"), XPathTool.this); + } catch (Exception e) { // catch-all + XSLTPlugin.processException(e, jEdit.getProperty("xpath.result.message.unkown-problem"), XPathTool.this); + } } } @@ -225,11 +253,18 @@ private void evaluateExpression() throws Exception, IOException, SAXException, TransformerException { Document document = getCurrentDocument(); - String expression = new String(); + String expression = expressionPanel.getExpression(); - expression = expressionPanel.getExpression(); - - XObject xObject = XPathAPI.eval(document, expression); + /* don't know how to get the result type using javax.xml.xpath.* API. + * Plus here, using NODESET will throw an exception when evaluating 1+1 + XPathFactory factory = XPathFactory.newInstance(); + XPath xpath = factory.newXPath(); + + Object result = xpath.evaluate(expression, document,XPathConstants.NODESET); + System.err.println(result);*/ + + PrefixResolverImpl res = new PrefixResolverImpl(nsPanel.getMap()); + XObject xObject = XPathAPI.eval(document, expression, res); expressionPanel.addToHistory(expression); dateTypeField.setText(getDataTypeMessage(xObject)); @@ -368,14 +403,112 @@ } + private void grabNamespaces(){ + if(inputSelectionPanel.isSourceFileDefined()) { + + Document document = null; + try { + document = getCurrentDocument(); + } catch (SAXException e) { // parse problem + XSLTPlugin.processException(e, jEdit.getProperty("xpath.result.message.buffer-unparseable"), XPathTool.this); + } catch (IOException e) { // parse problem + XSLTPlugin.processException(e, jEdit.getProperty("xpath.result.message.buffer-unparseable"), XPathTool.this); + } catch (Exception e) { // catch-all + XSLTPlugin.processException(e, jEdit.getProperty("xpath.result.message.unkown-problem"), XPathTool.this); + } + + if(document != null) { + Map<String,List<String>> bindings = new HashMap<String,List<String>>(); + + if (document.getImplementation().hasFeature("traversal", "2.0")) { + DocumentTraversal traversable = (DocumentTraversal) document; + NodeIterator iterator = traversable.createNodeIterator( + document, NodeFilter.SHOW_ELEMENT,null, true); + + Node node; + while ((node = iterator.nextNode()) != null) { + //Element e = (Element)node; + NamedNodeMap attrs = node.getAttributes(); + for(int i=0;i<attrs.getLength();i++) { + Node a = attrs.item(i); + + System.out.println(a.getPrefix()+":"+a.getLocalName()); + if("xmlns".equals(a.getPrefix())) { + String prefix = a.getLocalName(); + String ns = a.getNodeValue(); + List l; + if(bindings.containsKey(prefix)){ + l = bindings.get(prefix); + } else { + l = new ArrayList<String>(); + bindings.put(prefix,l); + } + if(!l.contains(ns)) { + l.add(ns); + } + } + } + } + + Map<String,String> finalMap = new HashMap<String,String>(); + for(Map.Entry<String,List<String>> binding : bindings.entrySet()) { + String prefix; + if("".equals(binding.getKey())) { + prefix = "def"; + } else { + prefix = binding.getKey(); + } + int len = binding.getValue().size(); + if(!finalMap.containsKey(prefix) && len == 1) { + finalMap.put(prefix,binding.getValue().get(0)); + } else { + for(int i=0,j=0;i<len;j++){ + String uniq = prefix+j; + if(!finalMap.containsKey(uniq)) { + finalMap.put(uniq,binding.getValue().get(i)); + i++; + } + } + } + } + + Log.log(Log.DEBUG,this,"found:"+bindings); + Log.log(Log.DEBUG,this,"found:"+finalMap); + String[] keys = new String[finalMap.size()]; + String[] values = new String[finalMap.size()]; + int i=0; + for(Map.Entry<String,String> binding : finalMap.entrySet()) { + keys[i] = binding.getKey(); + values[i] = binding.getValue(); + i++; + } + + nsPanel.setKeyValues(keys, values); + + } else { + Log.log(Log.ERROR,this,"DomImplementation doesn't support DOM Traversal"); + } + } + + } else { + Log.log(Log.ERROR,this,"Source isn't defined"); + GUIUtilities.message(this,"xpath.ns.grab.error-no-source",new Object[]{}); + } + + } + /** * Panel housing the "Evaluate" button */ class EvaluatePanel extends JPanel { + private JButton grabNamespaces; private JButton button; private JCheckBox autoCompleteCheck; EvaluatePanel() { + + grabNamespaces = grabNSAction.getButton(); + String iconName = jEdit.getProperty("xpath.evaluate.button.icon"); String toolTipText = jEdit.getProperty("xpath.evaluate.button.tooltip"); String shortcut = jEdit.getProperty("xpath.evaluate.shortcut"); @@ -394,6 +527,7 @@ button.setMinimumSize(dimension); button.setPreferredSize(dimension); + add(grabNamespaces); add(button); autoCompleteCheck = new JCheckBox("Use auto-complete"); autoCompleteCheck.addItemListener(XPathTool.this); @@ -401,7 +535,43 @@ } } - /** + private class GrabNSAction extends XsltAction { + + GrabNSAction(){ + super("xpath.ns.grab"); + } + + public void actionPerformed(ActionEvent e) { + grabNamespaces(); + } + + } + + private static class PrefixResolverImpl implements PrefixResolver{ + private Map<String,String> map; + + PrefixResolverImpl(Map<String,String> map) { + this.map = map; + } + + public String getBaseIdentifier(){ + return null; + } + + public String getNamespaceForPrefix(String prefix, Node context) { + return map.get(prefix); + } + + public String getNamespaceForPrefix(java.lang.String prefix) { + return map.get(prefix); + } + + public boolean handlesNullPrefixes(){ + return false; + } + } + + /** * JTextArea that let's tab key change focus to the next component. */ public class JTextAreaWithoutTab extends JTextArea { @@ -733,5 +903,7 @@ public Document getDocument() { return document; } + + } Modified: plugins/XSLT/trunk/xslt/XSLTProcessor.java =================================================================== --- plugins/XSLT/trunk/xslt/XSLTProcessor.java 2010-02-28 14:40:18 UTC (rev 17403) +++ plugins/XSLT/trunk/xslt/XSLTProcessor.java 2010-02-28 16:35:38 UTC (rev 17404) @@ -81,7 +81,7 @@ private BufferOrFileVFSSelector inputSelectionPanel; private StylesheetPanel stylesheetPanel; - private StylesheetParameterPanel parameterPanel; + private KeyValuePanel parameterPanel; private JButton transformButton; private JCheckBox openResultCheckBox; private JCheckBox threeWayCheckBox; @@ -101,7 +101,7 @@ this.resultPanel = new BufferOrFileVFSSelector(view,"xslt.result"); this.inputSelectionPanel = new BufferOrFileVFSSelector(view,"xslt.source"); this.stylesheetPanel = new StylesheetPanel(view, this); - this.parameterPanel = new StylesheetParameterPanel(); + this.parameterPanel = new KeyValuePanel("xslt.parameters"); JComponent transformPanel = initTransformToolBar(); @@ -305,7 +305,7 @@ } - public StylesheetParameterPanel getParameterPanel() { + public KeyValuePanel getParameterPanel() { return parameterPanel; } @@ -323,7 +323,7 @@ public void setStylesheetParameters(String[] names, String[] values) { - this.parameterPanel.setParameters(names, values); + this.parameterPanel.setKeyValues(names, values); } @@ -520,7 +520,7 @@ private Map getStylesheetParameters() { - return getParameterPanel().getParametersMap(); + return getParameterPanel().getMap(); } Modified: plugins/XSLT/trunk/xslt/XsltSettings.java =================================================================== --- plugins/XSLT/trunk/xslt/XsltSettings.java 2010-02-28 14:40:18 UTC (rev 17403) +++ plugins/XSLT/trunk/xslt/XsltSettings.java 2010-02-28 16:35:38 UTC (rev 17404) @@ -188,11 +188,11 @@ private void appendStylesheetParameters(StringBuffer buffer) { - int parameterCount = processor.getParameterPanel().getParametersCount(); + int parameterCount = processor.getParameterPanel().getCount(); for(int i = 0; i < parameterCount; i++) { - String name = processor.getParameterPanel().getParameterName(i); - String value = processor.getParameterPanel().getParameterValue(i); + String name = processor.getParameterPanel().getName(i); + String value = processor.getParameterPanel().getValue(i); buffer.append(" <param name=\"" + name + "\" expression=\"" + value + "\"/>\n"); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |