Disable new, new from template, up, down, indent and unindent buttons in WBS
Depending on selected node and if it's or not updated from templates the different buttons are enabled or disabled accordingly. FEA: ItEr77S12AdaptPlanningAccordingTimesheets
This commit is contained in:
parent
43d4b9b805
commit
a1f4ece458
9 changed files with 80 additions and 28 deletions
|
|
@ -1606,4 +1606,14 @@ public abstract class OrderElement extends IntegrationEntity implements
|
|||
return sumChargedEffort.isFinishedTimesheets();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUpdatedFromTimesheets() {
|
||||
TaskElement taskElement = getTaskElement();
|
||||
if (taskElement == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return taskElement.isUpdatedFromTimesheets();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -158,6 +158,11 @@ public class OrderLineGroup extends OrderElement implements
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUpdatedFromTimesheets() {
|
||||
return getThis().isUpdatedFromTimesheets();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static OrderLineGroup create() {
|
||||
|
|
|
|||
|
|
@ -590,4 +590,9 @@ public abstract class OrderElementTemplate extends BaseEntity implements
|
|||
|
||||
public abstract boolean isOrderTemplate();
|
||||
|
||||
@Override
|
||||
public boolean isUpdatedFromTimesheets() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,6 +100,11 @@ public class OrderLineGroupTemplate extends OrderElementTemplate implements
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUpdatedFromTimesheets() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static OrderLineGroupTemplate createNew() {
|
||||
|
|
|
|||
|
|
@ -60,4 +60,6 @@ public interface ITreeNode<T extends ITreeNode<T>> {
|
|||
*/
|
||||
boolean isEmptyLeaf();
|
||||
|
||||
boolean isUpdatedFromTimesheets();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,6 @@ import org.libreplan.business.orders.entities.OrderElement;
|
|||
import org.libreplan.business.orders.entities.OrderLine;
|
||||
import org.libreplan.business.orders.entities.OrderLineGroup;
|
||||
import org.libreplan.business.orders.entities.SchedulingState;
|
||||
import org.libreplan.business.planner.entities.TaskElement;
|
||||
import org.libreplan.business.requirements.entities.CriterionRequirement;
|
||||
import org.libreplan.business.templates.entities.OrderElementTemplate;
|
||||
import org.libreplan.business.users.entities.UserRole;
|
||||
|
|
@ -519,15 +518,6 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
|
|||
super.removeCodeTextbox(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isUpdatedFromTimesheets(OrderElement currentElement) {
|
||||
TaskElement taskElement = currentElement.getTaskElement();
|
||||
if (taskElement != null) {
|
||||
return taskElement.isUpdatedFromTimesheets();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -169,12 +169,6 @@ public class TemplatesTreeController extends
|
|||
return currentElement.getSchedulingState();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isUpdatedFromTimesheets(
|
||||
OrderElementTemplate currentElement) {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public TemplatesTreeController(IOrderTemplatesModel model,
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
|
|||
viewStateSnapshot = TreeViewStateSnapshot.takeSnapshot(tree);
|
||||
getModel().indent(element);
|
||||
filterByPredicateIfAny();
|
||||
updateControlButtons();
|
||||
}
|
||||
|
||||
public TreeModel getTreeModel() {
|
||||
|
|
@ -140,6 +141,7 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
|
|||
viewStateSnapshot = TreeViewStateSnapshot.takeSnapshot(tree);
|
||||
getModel().unindent(element);
|
||||
filterByPredicateIfAny();
|
||||
updateControlButtons();
|
||||
}
|
||||
|
||||
public void up() {
|
||||
|
|
@ -153,6 +155,7 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
|
|||
viewStateSnapshot = TreeViewStateSnapshot.takeSnapshot(tree);
|
||||
getModel().up(element);
|
||||
filterByPredicateIfAny();
|
||||
updateControlButtons();
|
||||
}
|
||||
|
||||
public void down() {
|
||||
|
|
@ -165,6 +168,7 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
|
|||
viewStateSnapshot = TreeViewStateSnapshot.takeSnapshot(tree);
|
||||
getModel().down(element);
|
||||
filterByPredicateIfAny();
|
||||
updateControlButtons();
|
||||
}
|
||||
|
||||
public T getSelectedNode() {
|
||||
|
|
@ -350,6 +354,15 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
|
|||
|
||||
private List<Column> columns;
|
||||
|
||||
private Button btnNewFromTemplate;
|
||||
|
||||
private Button downButton;
|
||||
|
||||
private Button upButton;
|
||||
|
||||
private Button leftButton;
|
||||
|
||||
private Button rightButton;
|
||||
|
||||
protected TreeViewStateSnapshot getSnapshotOfOpenedNodes() {
|
||||
return viewStateSnapshot;
|
||||
|
|
@ -357,6 +370,13 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
|
|||
|
||||
private void resetControlButtons() {
|
||||
btnNew.setDisabled(isNewButtonDisabled());
|
||||
btnNewFromTemplate.setDisabled(isNewButtonDisabled());
|
||||
|
||||
boolean disabled = readOnly || isPredicateApplied();
|
||||
downButton.setDisabled(disabled);
|
||||
upButton.setDisabled(disabled);
|
||||
leftButton.setDisabled(disabled);
|
||||
rightButton.setDisabled(disabled);
|
||||
}
|
||||
|
||||
protected abstract boolean isNewButtonDisabled();
|
||||
|
|
@ -763,7 +783,7 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
|
|||
SchedulingStateToggler schedulingStateToggler = new SchedulingStateToggler(
|
||||
schedulingState);
|
||||
schedulingStateToggler.setReadOnly(readOnly
|
||||
|| isUpdatedFromTimesheets(currentElement));
|
||||
|| currentElement.isUpdatedFromTimesheets());
|
||||
final Treecell cell = addCell(
|
||||
getDecorationFromState(getSchedulingStateFrom(currentElement)),
|
||||
schedulingStateToggler);
|
||||
|
|
@ -1143,8 +1163,6 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
|
|||
|
||||
}
|
||||
|
||||
protected abstract boolean isUpdatedFromTimesheets(T currentElement);
|
||||
|
||||
}
|
||||
|
||||
public void setColumns(List<Column> columns) {
|
||||
|
|
@ -1192,17 +1210,40 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
|
|||
/**
|
||||
* Disable control buttons (new, up, down, indent, unindent, delete)
|
||||
*/
|
||||
public void updateControlButtons(Event event) {
|
||||
updateControlButtons((Tree) event.getTarget());
|
||||
}
|
||||
|
||||
public void updateControlButtons(Tree tree) {
|
||||
final Treeitem item = tree.getSelectedItem();
|
||||
if (item == null) {
|
||||
public void updateControlButtons() {
|
||||
T element = getSelectedNode();
|
||||
if (element == null) {
|
||||
resetControlButtons();
|
||||
return;
|
||||
}
|
||||
btnNew.setDisabled(false);
|
||||
Treeitem item = tree.getSelectedItem();
|
||||
|
||||
btnNew.setDisabled(isNewButtonDisabled()
|
||||
|| element.isUpdatedFromTimesheets());
|
||||
btnNewFromTemplate.setDisabled(isNewButtonDisabled()
|
||||
|| element.isUpdatedFromTimesheets());
|
||||
|
||||
boolean disabled = readOnly || isPredicateApplied();
|
||||
downButton.setDisabled(disabled || isLastItem(element));
|
||||
upButton.setDisabled(disabled || isFirstItem(element));
|
||||
|
||||
disabled |= element.isUpdatedFromTimesheets();
|
||||
leftButton.setDisabled(disabled
|
||||
|| isFirstLevelElement(item)
|
||||
|| element.getParent().isUpdatedFromTimesheets());
|
||||
|
||||
boolean previousSiblingIsUpdatedFromTimesheets = false;
|
||||
try {
|
||||
Treeitem previousItem = (Treeitem) item.getParent()
|
||||
.getChildren().get(item.getIndex() - 1);
|
||||
T previousSibling = type.cast(previousItem.getValue());
|
||||
previousSiblingIsUpdatedFromTimesheets = previousSibling
|
||||
.isUpdatedFromTimesheets();
|
||||
} catch (IndexOutOfBoundsException e) {
|
||||
// Do nothing
|
||||
}
|
||||
rightButton.setDisabled(disabled || isFirstItem(element)
|
||||
|| previousSiblingIsUpdatedFromTimesheets);
|
||||
}
|
||||
|
||||
protected abstract boolean isPredicateApplied();
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@
|
|||
<vbox width="100%">
|
||||
<tree id="tree" hflex="1" multiple="false" droppable="true"
|
||||
onDrop="treeController.move(self, event.dragged)"
|
||||
onSelect="treeController.updateControlButtons(event)"
|
||||
onSelect="treeController.updateControlButtons()"
|
||||
mold="paging" pageSize="25"
|
||||
sclass="orderTree"
|
||||
zclass="z-dottree">
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue