NetBeans IDE
NetBeans Platform
Plugins
Docs & Support
Community
Partners
HOME
/ Bugzilla
[?]
|
New
|
Browse
|
Search
|
Reports
|
Help
|
Log In
Please use the Apache issue tracking system for new NetBeans issues (
https://issues.apache.org/jira/projects/NETBEANS0/issues
) !!
[patch]
Proposed patch v2
181703.patch (text/plain), 9.49 KB, created by
markiewb
on 2016-08-10 22:44 UTC
(
hide
)
Description:
Proposed patch v2
Filename:
MIME Type:
Creator:
markiewb
Created:
2016-08-10 22:44 UTC
Size:
9.49 KB
patch
obsolete
># NetBeans IDE HG Patch ># This patch file was generated by NetBeans IDE ># Following Index: paths are relative to: D:\ws\core-main ># This patch can be applied using context Tools: Patch action on respective folder. ># It uses platform neutral UTF-8 encoding and \n newlines. ># Above lines and this line are ignored by the patching process. >Index: editor.codetemplates/src/org/netbeans/lib/editor/codetemplates/CodeTemplateInsertHandler.java >--- editor.codetemplates/src/org/netbeans/lib/editor/codetemplates/CodeTemplateInsertHandler.java >+++ editor.codetemplates/src/org/netbeans/lib/editor/codetemplates/CodeTemplateInsertHandler.java >@@ -44,9 +44,11 @@ > > package org.netbeans.lib.editor.codetemplates; > >+import static java.lang.Integer.MAX_VALUE; > import java.util.ArrayList; > import java.util.Collection; > import java.util.Collections; >+import java.util.Comparator; > import java.util.List; > import java.util.logging.Level; > import java.util.logging.LogRecord; >@@ -335,8 +337,11 @@ > } > > TextRegion<?> caretTextRegion = null; >+ >+ List<CodeTemplateParameter> prioritizedMasterParameters = prioritizeParameters(masterParameters); >+ > // Go through all master parameters and create region infos for them >- for (CodeTemplateParameter master : masterParameters) { >+ for (CodeTemplateParameter master : prioritizedMasterParameters) { > CodeTemplateParameterImpl masterImpl = CodeTemplateParameterImpl.get(master); > if (CodeTemplateParameter.CURSOR_PARAMETER_NAME.equals(master.getName())) { > // Add explicit ${cursor} as last into text sync group to jump to it by TAB as last param >@@ -587,7 +592,38 @@ > } > return sb.toString(); > } >+ /** >+ * #181703 - Allow prioritizing parameters in a code-template. >+ * Package private for testing >+ */ >+ static List<CodeTemplateParameter> prioritizeParameters(List<CodeTemplateParameter> params) { > >+ List<CodeTemplateParameter> result = new ArrayList<>(params); >+ Collections.sort(result, new Comparator<CodeTemplateParameter>() { >+ @Override >+ public int compare(CodeTemplateParameter p1, CodeTemplateParameter p2) { >+ return getPrio(p1) - getPrio(p2); >+ } >+ >+ private int getPrio(CodeTemplateParameter templateParam) throws NumberFormatException { >+ if (null == templateParam) { >+ return MAX_VALUE; >+ } >+ String value = templateParam.getHints().get(CodeTemplateParameter.ORDERING_HINT_NAME); >+ if (null != value) { >+ try { >+ return Integer.parseInt(value); >+ } catch (NumberFormatException e) { >+ // ignore >+ return MAX_VALUE; >+ } >+ } >+ return MAX_VALUE; >+ } >+ }); >+ return result; >+ } >+ > private static final class TemplateInsertUndoEdit extends AbstractUndoableEdit { > > private Document doc; >Index: editor.codetemplates/src/org/netbeans/lib/editor/codetemplates/spi/CodeTemplateParameter.java >--- editor.codetemplates/src/org/netbeans/lib/editor/codetemplates/spi/CodeTemplateParameter.java >+++ editor.codetemplates/src/org/netbeans/lib/editor/codetemplates/spi/CodeTemplateParameter.java >@@ -112,7 +112,24 @@ > */ > public static final String EDITABLE_HINT_NAME = "editable"; // NOI18N > >- >+ /** >+ * The ordering attribute defines the sequence in which placeholders are >+ * completed. Use 0 for the first element, 1 for the second... Placeholders >+ * without ordering information will be placed after the last placeholder >+ * with ordering information. >+ * >+ * <p> >+ * Example of ordering of parameters : >+ * <pre> >+ * // paramC comes first, then paramB, then paramA >+ * ${paramA} ${paramB ordering=2} ${paramC ordering=1} >+ * </pre> >+ * </p> >+ * https://netbeans.org/bugzilla/show_bug.cgi?id=181703 >+ * @since 1.42.0 >+ */ >+ public static final String ORDERING_HINT_NAME = "ordering"; // NOI18N >+ > private final CodeTemplateParameterImpl impl; > > CodeTemplateParameter(CodeTemplateParameterImpl impl) { >Index: editor.codetemplates/test/unit/src/org/netbeans/lib/editor/codetemplates/CodeTemplateInsertHandlerTest.java >--- editor.codetemplates/test/unit/src/org/netbeans/lib/editor/codetemplates/CodeTemplateInsertHandlerTest.java >+++ editor.codetemplates/test/unit/src/org/netbeans/lib/editor/codetemplates/CodeTemplateInsertHandlerTest.java >@@ -0,0 +1,67 @@ >+/* >+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. >+ * >+ * Copyright 2016 Oracle and/or its affiliates. All rights reserved. >+ * >+ * Oracle and Java are registered trademarks of Oracle and/or its affiliates. >+ * Other names may be trademarks of their respective owners. >+ * >+ * The contents of this file are subject to the terms of either the GNU >+ * General Public License Version 2 only ("GPL") or the Common >+ * Development and Distribution License("CDDL") (collectively, the >+ * "License"). You may not use this file except in compliance with the >+ * License. You can obtain a copy of the License at >+ * http://www.netbeans.org/cddl-gplv2.html >+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the >+ * specific language governing permissions and limitations under the >+ * License. When distributing the software, include this License Header >+ * Notice in each file and include the License file at >+ * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this >+ * particular file as subject to the "Classpath" exception as provided >+ * by Oracle in the GPL Version 2 section of the License file that >+ * accompanied this code. If applicable, add the following below the >+ * License Header, with the fields enclosed by brackets [] replaced by >+ * your own identifying information: >+ * "Portions Copyrighted [year] [name of copyright owner]" >+ * >+ * If you wish your version of this file to be governed by only the CDDL >+ * or only the GPL Version 2, indicate your decision by adding >+ * "[Contributor] elects to include this software in this distribution >+ * under the [CDDL or GPL Version 2] license." If you do not indicate a >+ * single choice of license, a recipient has the option to distribute >+ * your version of this file under either the CDDL, the GPL Version 2 or >+ * to extend the choice of license to its licensees as provided above. >+ * However, if you add GPL Version 2 code and therefore, elected the GPL >+ * Version 2 license, then the option applies only if the new code is >+ * made subject to such option by the copyright holder. >+ * >+ * Contributor(s): >+ * >+ * Portions Copyrighted 2016 Sun Microsystems, Inc. >+ */ >+package org.netbeans.lib.editor.codetemplates; >+ >+import java.util.Arrays; >+import java.util.List; >+import org.junit.Test; >+import static org.junit.Assert.*; >+import org.netbeans.lib.editor.codetemplates.spi.CodeTemplateParameter; >+ >+/** >+ * >+ * @author markiewb >+ */ >+public class CodeTemplateInsertHandlerTest { >+ >+ @Test >+ public void testPrioritizeParameters() { >+ CodeTemplateSpiPackageAccessor get = CodeTemplateSpiPackageAccessor.get(); >+ CodeTemplateParameter paramA = get.createParameter(new CodeTemplateParameterImpl(null, "${paramA}", 0)); >+ CodeTemplateParameter paramB = get.createParameter(new CodeTemplateParameterImpl(null, "${paramB ordering=\"2\"}", 0)); >+ CodeTemplateParameter paramC = get.createParameter(new CodeTemplateParameterImpl(null, "${paramC ordering=\"1\"}", 0)); >+ >+ List<CodeTemplateParameter> prioritizeParameters = CodeTemplateInsertHandler.prioritizeParameters(Arrays.asList(paramA, paramB, paramC)); >+ assertEquals(Arrays.asList(paramC, paramB, paramA), prioritizeParameters); >+ } >+ >+} >Index: groovy.editor/src/org/netbeans/modules/groovy/editor/resources/DefaultAbbrevs.xml >--- groovy.editor/src/org/netbeans/modules/groovy/editor/resources/DefaultAbbrevs.xml >+++ groovy.editor/src/org/netbeans/modules/groovy/editor/resources/DefaultAbbrevs.xml >@@ -132,7 +132,7 @@ > </codetemplate> > <codetemplate abbreviation="fore" contexts="BLOCK,CASE"> > <code> >-<![CDATA[for (${TYPE iterableElementType default="Object" editable=false} ${ELEM newVarName default="elem"} : ${ITER iterable default="col"}) { >+<![CDATA[for (${TYPE iterableElementType default="Object" editable=false} ${ELEM newVarName default="elem" ordering="2"} : ${ITER iterable default="col" ordering="1"}) { > ${selection line}${cursor} > } > ]]> >Index: java.editor/src/org/netbeans/modules/java/editor/resources/DefaultAbbrevs.xml >--- java.editor/src/org/netbeans/modules/java/editor/resources/DefaultAbbrevs.xml >+++ java.editor/src/org/netbeans/modules/java/editor/resources/DefaultAbbrevs.xml >@@ -176,7 +176,7 @@ > </codetemplate> > <codetemplate abbreviation="fore" contexts="BLOCK,CASE,LABELED_STATEMENT,DO_WHILE_LOOP,ENHANCED_FOR_LOOP,FOR_LOOP,IF,WHILE_LOOP,LAMBDA_EXPRESSION"> > <code> >-<![CDATA[for (${TYPE iterableElementType default="Object" editable=false} ${ELEM newVarName default="elem"} : ${ITER iterable default="col"}) { >+<![CDATA[for (${TYPE iterableElementType default="Object" editable=false} ${ELEM newVarName default="elem" ordering="2"} : ${ITER iterable default="col" ordering="1"}) { > ${selection}${cursor} > } > ]]>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
Actions:
View
|
Diff
Attachments on
bug 181703
: 161626
SiteMap
About Us
Contact
Legal & Licences
By use of this website, you agree to the
NetBeans Policies and Terms of Use
. © 2014, Oracle Corporation and/or its affiliates. Sponsored by