Skip to content

Commit

Permalink
Custom tasks can now be specified as non-blocking.
Browse files Browse the repository at this point in the history
  • Loading branch information
kelemen committed Oct 9, 2012
1 parent d7953f4 commit 734dcfb
Show file tree
Hide file tree
Showing 7 changed files with 61 additions and 16 deletions.
15 changes: 13 additions & 2 deletions src/org/netbeans/gradle/project/persistent/XmlPropertyFormat.java
Expand Up @@ -44,6 +44,7 @@ final class XmlPropertyFormat {
private static final String SOURCE_LEVEL_NODE = "source-level";
private static final String COMMON_TASKS_NODE = "common-tasks";
private static final String TASK_DISPLAY_NAME_NODE = "display-name";
private static final String TASK_NON_BLOCKING_NODE = "non-blocking";
private static final String TASK_NODE = "task";
private static final String TASK_NAME_LIST_NODE = "task-names";
private static final String TASK_NAME_NODE = "name";
Expand Down Expand Up @@ -83,6 +84,7 @@ private static void addSingleTask(Node node, PredefinedTask task) {
Element taskNode = addChild(node, TASK_NODE);

addSimpleChild(taskNode, TASK_DISPLAY_NAME_NODE, task.getDisplayName());
addSimpleChild(taskNode, TASK_NON_BLOCKING_NODE, task.isNonBlocking() ? VALUE_YES : VALUE_NO);

Element nameListNode = addChild(taskNode, TASK_NAME_LIST_NODE);
for (PredefinedTask.Name name: task.getTaskNames()) {
Expand Down Expand Up @@ -258,6 +260,15 @@ private static PredefinedTask readTask(Element root) {
}
displayName = displayName != null ? displayName.trim() : "?";

Element nonBlockingNode = getFirstChildByTagName(root, TASK_NON_BLOCKING_NODE);
boolean nonBlocking = false;
if (nonBlockingNode != null) {
String nonBlockingStr = nonBlockingNode.getTextContent();
if (nonBlockingStr != null) {
nonBlocking = VALUE_YES.equalsIgnoreCase(nonBlockingStr.trim());
}
}

List<PredefinedTask.Name> names = new LinkedList<PredefinedTask.Name>();
Element nameListNode = getFirstChildByTagName(root, TASK_NAME_LIST_NODE);
if (nameListNode != null) {
Expand All @@ -266,7 +277,7 @@ private static PredefinedTask readTask(Element root) {
name = name != null ? name.trim() : "";

if (!name.isEmpty()) {
boolean mustExist = VALUE_YES.equals(nameNode.getAttribute(TASK_MUST_EXIST_ATTR));
boolean mustExist = VALUE_YES.equalsIgnoreCase(nameNode.getAttribute(TASK_MUST_EXIST_ATTR));
names.add(new PredefinedTask.Name(name, mustExist));
}
}
Expand Down Expand Up @@ -296,7 +307,7 @@ private static PredefinedTask readTask(Element root) {
}
}

return new PredefinedTask(displayName, names, args, jvmArgs);
return new PredefinedTask(displayName, names, args, jvmArgs, nonBlocking);
}

private static List<PredefinedTask> readTasks(Element root) {
Expand Down
Expand Up @@ -104,7 +104,8 @@ private PredefinedTask getShownTask() {
currentlyShown.getTask().getDisplayName(),
names,
Arrays.asList(jActionPanel.getArguments()),
Arrays.asList(jActionPanel.getJvmArguments()));
Arrays.asList(jActionPanel.getJvmArguments()),
jActionPanel.isNonBlocking());
}

public void saveTasks(ProjectProperties properties) {
Expand Down Expand Up @@ -319,7 +320,8 @@ private void jAddNewButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN
displayName,
Collections.singletonList(new PredefinedTask.Name("tasks", true)),
Collections.<String>emptyList(),
Collections.<String>emptyList());
Collections.<String>emptyList(),
false);
PredefinedTaskItem item = new PredefinedTaskItem(newTask);
getModelOfTaskList().addElement(item);
jDefinedTasks.setSelectedValue(item, true);
Expand Down
10 changes: 9 additions & 1 deletion src/org/netbeans/gradle/project/properties/PredefinedTask.java
Expand Up @@ -37,18 +37,25 @@ public String toString() {
private final List<Name> taskNames;
private final List<String> arguments;
private final List<String> jvmArguments;
private final boolean nonBlocking;

public PredefinedTask(
String displayName,
List<Name> taskNames,
List<String> arguments,
List<String> jvmArguments) {
List<String> jvmArguments,
boolean nonBlocking) {
if (displayName == null) throw new NullPointerException("displayName");

this.displayName = displayName;
this.taskNames = CollectionUtils.copyNullSafeList(taskNames);
this.arguments = CollectionUtils.copyNullSafeList(arguments);
this.jvmArguments = CollectionUtils.copyNullSafeList(jvmArguments);
this.nonBlocking = nonBlocking;
}

public boolean isNonBlocking() {
return nonBlocking;
}

public String getDisplayName() {
Expand Down Expand Up @@ -139,6 +146,7 @@ public GradleTaskDef createTaskDef(NbGradleModule mainModule) {
GradleTaskDef.Builder builder = new GradleTaskDef.Builder(processedTaskNames);
builder.setArguments(arguments);
builder.setJvmArguments(jvmArguments);
builder.setNonBlocking(nonBlocking);
return builder.create();
}

Expand Down
1 change: 1 addition & 0 deletions src/org/netbeans/gradle/project/view/Bundle.properties
Expand Up @@ -2,3 +2,4 @@ CustomActionPanel.jJvmArgsCaption.text=JVM Arguments (each line is an argument):
CustomActionPanel.jTasksEdit.text=
CustomActionPanel.jTasksCaption.text=Tasks (separated by spaces):
CustomActionPanel.jArgsCaption.text=Arguments (each line is an argument):
CustomActionPanel.jNonBlockingCheck.text=Non-blocking task
18 changes: 14 additions & 4 deletions src/org/netbeans/gradle/project/view/CustomActionPanel.form
Expand Up @@ -16,14 +16,15 @@
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Component id="jScrollPane2" pref="469" max="32767" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jScrollPane2" alignment="1" pref="469" max="32767" attributes="0"/>
<Component id="jScrollPane1" alignment="1" max="32767" attributes="0"/>
<Component id="jTasksEdit" alignment="0" max="32767" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Group type="102" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jNonBlockingCheck" min="-2" max="-2" attributes="0"/>
<Component id="jTasksCaption" min="-2" max="-2" attributes="0"/>
<Component id="jArgsCaption" alignment="0" min="-2" max="-2" attributes="0"/>
<Component id="jJvmArgsCaption" alignment="0" min="-2" max="-2" attributes="0"/>
Expand All @@ -50,6 +51,8 @@
<Component id="jJvmArgsCaption" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="jScrollPane2" min="-2" pref="133" max="-2" attributes="0"/>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="jNonBlockingCheck" min="-2" max="-2" attributes="0"/>
<EmptySpace max="32767" attributes="0"/>
</Group>
</Group>
Expand Down Expand Up @@ -120,5 +123,12 @@
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JCheckBox" name="jNonBlockingCheck">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="org/netbeans/gradle/project/view/Bundle.properties" key="CustomActionPanel.jNonBlockingCheck.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
</SubComponents>
</Form>
24 changes: 18 additions & 6 deletions src/org/netbeans/gradle/project/view/CustomActionPanel.java
Expand Up @@ -33,6 +33,7 @@ public void updatePanel(PredefinedTask task) {
jvmArguments.append('\n');
}
jJvmArgsTextArea.setText(jvmArguments.toString());
jNonBlockingCheck.setSelected(task.isNonBlocking());
}

public String[] getTasks() {
Expand Down Expand Up @@ -62,6 +63,10 @@ public String[] getJvmArguments() {
return StringUtils.splitLines(text);
}

public boolean isNonBlocking() {
return jNonBlockingCheck.isSelected();
}

private void traverseWithTab(JTextArea textArea, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.VK_TAB) {
boolean forward = (event.getModifiersEx() & KeyEvent.SHIFT_DOWN_MASK) == 0;
Expand Down Expand Up @@ -92,6 +97,7 @@ private void initComponents() {
jJvmArgsCaption = new javax.swing.JLabel();
jScrollPane2 = new javax.swing.JScrollPane();
jJvmArgsTextArea = new javax.swing.JTextArea();
jNonBlockingCheck = new javax.swing.JCheckBox();

org.openide.awt.Mnemonics.setLocalizedText(jTasksCaption, org.openide.util.NbBundle.getMessage(CustomActionPanel.class, "CustomActionPanel.jTasksCaption.text")); // NOI18N

Expand Down Expand Up @@ -119,18 +125,21 @@ public void keyPressed(java.awt.event.KeyEvent evt) {
});
jScrollPane2.setViewportView(jJvmArgsTextArea);

org.openide.awt.Mnemonics.setLocalizedText(jNonBlockingCheck, org.openide.util.NbBundle.getMessage(CustomActionPanel.class, "CustomActionPanel.jNonBlockingCheck.text")); // NOI18N

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 469, Short.MAX_VALUE)
.addComponent(jScrollPane1)
.addComponent(jTasksEdit, javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 469, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jTasksEdit)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jNonBlockingCheck)
.addComponent(jTasksCaption)
.addComponent(jArgsCaption)
.addComponent(jJvmArgsCaption))
Expand All @@ -152,6 +161,8 @@ public void keyPressed(java.awt.event.KeyEvent evt) {
.addComponent(jJvmArgsCaption)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 133, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jNonBlockingCheck)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}// </editor-fold>//GEN-END:initComponents
Expand All @@ -169,6 +180,7 @@ private void jJvmArgsTextAreaKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRS
private javax.swing.JTextArea jArgsTextArea;
private javax.swing.JLabel jJvmArgsCaption;
private javax.swing.JTextArea jJvmArgsTextArea;
private javax.swing.JCheckBox jNonBlockingCheck;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JLabel jTasksCaption;
Expand Down
Expand Up @@ -253,7 +253,8 @@ private PredefinedTask createTaskDef(
displayName,
names,
Arrays.asList(actionPanel.getArguments()),
Arrays.asList(actionPanel.getJvmArguments()));
Arrays.asList(actionPanel.getJvmArguments()),
actionPanel.isNonBlocking());
}

private boolean doSaveTask(CustomActionPanel actionPanel) {
Expand Down

0 comments on commit 734dcfb

Please sign in to comment.