Статьи

10 совершенно новых шаблонов кода для разработчиков модулей NetBeans

Со времени написания 10 самых интересных ярлыков Java для среды IDE NetBeans, которые я никогда не знал , в сборках IDE 6.9 NetBeans появилось еще несколько идей (оставив мне головную боль от того, как вписать вещи в карту сочетаний клавиш, которая доступна из меню «Справка» в NetBeans IDE).

В частности, в настоящее время доступно несколько шаблонов кода, которые полезны для программирования с использованием API-интерфейсов NetBeans, т. Е. Для создания модулей NetBeans, т. Е. Для создания / расширения приложений на платформе NetBeans.

Без лишних слов, вот они, введите сокращение и затем нажмите клавишу TAB (или любую другую, на которую установлена ​​ваша клавиша расширения), чтобы увидеть расширения, описанные ниже:

  1. Аббревиатура: 2до

    Описание: конвертировать FileObject в DataObject

    Расширяется до:

    try {
    ${dobType type="org.openide.loaders.DataObject" editable="false" default="DataObject"} ${dob newVarName default="dob"} = ${dobType}.find(${fo instanceof="org.openide.filesystems.FileObject" default="fo"});
    ${cursor}
    } catch (${etype type="org.openide.loaders.DataObjectNotFoundException" default="DataObjectNotFoundException" editable="false"} ${exName newVarName default="ex" editable="false"}) {
    ${exctype type="org.openide.util.Exceptions" editable="false" default=""}.printStackTrace(${exName});
    }


    Пример:

    try {
    DataObject dataObject = DataObject.find(myFo);

    } catch (DataObjectNotFoundException dataObjectNotFoundException) {
    Exceptions.printStackTrace(dataObjectNotFoundException);
    }
  2. Аббревиатура: 2f

    Описание: Конвертировать FileObject в java.io.File

    Расширяется до:

    ${fileType type="java.io.File" default="File" editable="false"} ${file newVarName default="f"} = ${FileUtilType type="org.openide.filesystems.FileUtil" editable="false")}.toFile(${fo instanceof="org.openide.filesystems.FileObject" default="fo"});
    ${cursor}


    Пример:

    File file = FileUtil.toFile(myFo);
  3. Аббревиатура: 2fo

    Описание: Конвертировать java.io.File в FileObject.

    Расширяется до:

    ${fileType type="org.openide.filesystems.FileObject" default="FileObject" editable="false"} ${file newVarName default="f"} = ${FileUtilType type="org.openide.filesystems.FileUtil" editable="false")}.toFileObject(${FileUtilType}.normalizeFile(${f instanceof="java.io.File" default="f"}));
    ${cursor}


    Пример:

    FileObject fileObject = FileUtil.toFileObject(FileUtil.normalizeFile(myFile));
  4. Аббревиатура: Lka

    Описание: Найти все реализации определенного типа, зарегистрированные в META-INF / services.

    Расширяется до:

    ${coltype type="java.util.Collection" default="Collection" editable="false"}  ${obj newVarName default="obj"} = ${lkptype editable="false" default="Lookup" type="org.openide.util.Lookup"}.getDefault().lookupAll(${Type}.class);
    ${cursor}


    Пример:

    Collection<? extends Type> collection = Lookup.getDefault().lookupAll(Type.class);

    Вариация: lka (т. Е. Первый символ в нижнем регистре)

    Описание: Найти все реализации определенного типа из локального поиска, например, TopComponent, Node или DataObject.

    Пример:

    Collection<? extends Type> collection = myNode.lookupAll(Type.class);
  5. Аббревиатура: Lkp

    Описание: Найти реализацию с одним типом, зарегистрированную в META-INF / services.

    Расширяется до:

    ${Type} ${obj newVarName default="obj"} = ${lkptype editable="false" default="Lookup" type="org.openide.util.Lookup"}.getDefault().lookup(${Type}.class);
    ${cursor}
    Type type = Lookup.getDefault().lookup(Type.class);

    Variation: lkp (i.e., the first character is lowercase)

    Description: Find a single implementation of a certain type from a local lookup, e.g., TopComponent, Node, or DataObject.

    Example:

    Type type = myNode.lookup(Type.class);
  6. Abbreviation: Lkr

    Description: Assign a single typed instance from META-INF/services to a Result object, to which you can listen for changes.

    Expands to:

    ${coltype type="org.openide.util.Lookup.Result" default="Lookup.Result" editable="false"}  ${obj newVarName default="res"} = ${lkptype editable="false" default="Lookup" type="org.openide.util.Lookup"}.getDefault().lookupResult(${Type}.class);
    ${cursor}
    Lookup.Result<? extends Type> res = Lookup.getDefault().lookupResult(Type.class);

    Variation: lkr (i.e., the first character is lowercase)

    Description: Assign a single typed instance from a local lookup to a Result object, to which you can listen for changes.

    Example:

    Result<? extends Type> all = myNode.lookupResult(Type.class);
  7. Abbreviation: lko

    Description: Create a lookup for a local object, e.g., TopComponent, Node, or DataObject.

    Expands to:

    ${Type} ${obj newVarName default="obj"} = ${prov instanceof="org.openide.util.Lookup.Provider"}.getLookup().lookup(${Type}.class);
    ${cursor}
    Type type = myNode.getLookup().lookup(Type.class);
  8. Abbreviation: rp

    Description: Create code for using org.openide.util.RequestProcessor.

    Expands to:

    ${rp type="org.openide.util.RequestProcessor" default="RequestProcessor" editable="false"}.getDefault().post(${toRun instanceof="java.lang.Runnable" default="new Runnable() {
    public void run() {
    }
    }"});
    RequestProcessor.getDefault().post(new Runnable() {

    public void run() {
    }
    });
  9. Abbreviation: stat

    Description: Create code for writing text obtained from a Bundle.properties file into the status bar.

    Expands to:

    ${coltype type="org.openide.awt.StatusDisplayer" default="StatusDisplayer" editable="false"}.getDefault().setStatusText(${bundletype type="org.openide.util.NbBundle" default="NbBundle" editable="false"}.getMessage(getClass(), "${KEY}"));
    ${cursor}
    StatusDisplayer.getDefault().setStatusText(NbBundle.getMessage(getClass(), "KEY"));
  10. Abbreviation: nb

    Description: Get a text from a Bundle.properties file.

    Expands to:

    ${coltype type="org.openide.util.NbBundle" default="NbBundle" editable="false"}.getMessage(${classVar editable="false" currClassName default="getClass()"}.class, "${KEY}")
    NbBundle.getMessage(DemoAction.class, "KEY")

    Variation: nbb (i.e., add an additional ‘b’ character)

    Description: Pass in parameters for formatting the text.

    Example:

    NbBundle.getMessage(DemoAction.class, "KEY", params)

 

It is for the first time that there are special code templates relevant to NetBeans module development, but there are many other new NetBeans code templates that I haven’t mentioned yet. A separate article will deal with those, but you can already try some of them out yourself: 2al, 2ar, 2l, 2s, log, loge, logp.

Many more new ones besides those, but let’s leave them for another day (or look in the Options window yourself, within the Editor | Code Templates tab, and you’ll see all the code templates) when we’ll look some more at new code templates in NetBeans IDE 6.9 builds.