[Bug #1262] Remove option to cancel progress assignments in Gantt view

It makes this window coherent with the one in WBS.

Moreover, there were more problems than the one described in the bug
itself. For example, if you remove a progress type and click cancel, the
progress is removed when you come back to the pop-up.

The problem is that we're not working against a copy so in cancel button
we need to revert all the changes done, which is quite complicated. So,
at this moment the decision is remove this option.

FEA: ItEr75S04BugFixing
This commit is contained in:
Manuel Rego Casasnovas 2011-11-16 13:34:34 +01:00
parent a7dce2c8a7
commit bbb5611546
7 changed files with 3 additions and 114 deletions

View file

@ -116,6 +116,4 @@ public interface IManageOrderElementAdvancesModel {
AdvanceAssignment getSpreadAdvance();
void cancel();
}

View file

@ -118,10 +118,6 @@ public class ManageOrderElementAdvancesController extends
return manageOrderElementAdvancesModel.getAdvanceAssignments();
}
public void cancel() {
manageOrderElementAdvancesModel.cancel();
}
public boolean close() {
return save();
}

View file

@ -29,11 +29,9 @@ import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
@ -97,8 +95,6 @@ public class ManageOrderElementAdvancesModel implements
private List<AdvanceType> listAdvanceTypes;
private CancelOperation cancelOperation = new CancelOperation();
@Autowired
public ManageOrderElementAdvancesModel(
IAdvanceMeasurementDAO advanceMeasurementDAO,
@ -241,11 +237,6 @@ public class ManageOrderElementAdvancesModel implements
}
}
@Override
public void cancel() {
cancelOperation.restoreOriginalState();
}
@Override
public boolean addNewLineAdvanceAssignment() {
DirectAdvanceAssignment newAdvance = DirectAdvanceAssignment.create();
@ -311,7 +302,6 @@ public class ManageOrderElementAdvancesModel implements
measurement.setDate(null);
advanceAssignment.addAdvanceMeasurements(measurement);
}
cancelOperation.markAsAdded(measurement);
}
@Override
@ -324,7 +314,6 @@ public class ManageOrderElementAdvancesModel implements
@Override
public void removeLineAdvanceMeasurement(AdvanceMeasurement measurement) {
cancelOperation.markAsRemoved(measurement);
this.advanceAssignment.removeAdvanceMeasurement(measurement);
}
@ -431,7 +420,6 @@ public class ManageOrderElementAdvancesModel implements
reattachmentOrderElement();
orderElement.updateAdvancePercentageTaskElement();
validateBasicData();
cancelOperation.clear();
}
private void validateBasicData() throws InstanceNotFoundException,
@ -801,78 +789,4 @@ public class ManageOrderElementAdvancesModel implements
return false;
}
/**
* @author Diego Pino García <dpino@igalia.com>
*
* Keeps track of added and removed measurements. When the cancel button is
* pressed, restores the original state of the advance assignments
*
*/
private static class CancelOperation {
private Set<AdvanceMeasurement> addedMeasurements = new HashSet<AdvanceMeasurement>();
private Map<AdvanceAssignment, Set<AdvanceMeasurement>> removedMeasurements = new HashMap<AdvanceAssignment, Set<AdvanceMeasurement>>();
public void restoreOriginalState() {
addRemovedMeasurements();
removeAddedMeasurements();
clear();
}
private void clear() {
addedMeasurements.clear();
removedMeasurements.clear();
}
private void addRemovedMeasurements() {
for (AdvanceAssignment each : removedMeasurements.keySet()) {
if (each instanceof DirectAdvanceAssignment) {
DirectAdvanceAssignment directAdvanceAssignment = (DirectAdvanceAssignment) each;
directAdvanceAssignment
.addAdvanceMeasurements(removedMeasurements
.get(each));
}
}
removedMeasurements.clear();
}
private void removeAddedMeasurements() {
for (AdvanceMeasurement each : addedMeasurements) {
AdvanceAssignment assignment = each.getAdvanceAssignment();
if (assignment instanceof DirectAdvanceAssignment) {
DirectAdvanceAssignment directAdvanceAssignment = (DirectAdvanceAssignment) assignment;
directAdvanceAssignment.removeAdvanceMeasurement(each);
}
}
addedMeasurements.clear();
}
/**
* Keeps track of new measurement added to {@link AdvanceAssignment}. If
* the user later clicks cancel these elements will be removed
*
* @param measurement
*/
public void markAsAdded(AdvanceMeasurement measurement) {
addedMeasurements.add(measurement);
}
/**
* Keeps track of measurement removed from {@link AdvanceAssignment}. If
* the user later clicks cancel these elements will be added back again
*
* @param measurement
*/
public void markAsRemoved(AdvanceMeasurement measurement) {
AdvanceAssignment assignment = measurement.getAdvanceAssignment();
if (!removedMeasurements.containsKey(assignment)) {
removedMeasurements.put(assignment, new HashSet<AdvanceMeasurement>());
}
Set<AdvanceMeasurement> measurements = removedMeasurements.get(assignment);
measurements.add(measurement);
}
}
}

View file

@ -104,16 +104,10 @@ public class AdvanceAssignmentPlanningController extends GenericForwardComposer
}
public void onClose(Event event) {
cancel();
accept();
event.stopPropagation();
}
public void cancel() {
manageOrderElementAdvancesController.cancel();
advanceAssignmentPlanningModel.cancel();
close();
}
public void accept() {
boolean result = manageOrderElementAdvancesController.close();
if (result) {

View file

@ -63,11 +63,6 @@ public class AdvanceAssignmentPlanningModel implements
private OrderElement orderElement;
@Override
public void cancel() {
}
@Override
public void accept() {
getOrderElement().updateAdvancePercentageTaskElement();

View file

@ -37,11 +37,6 @@ public interface IAdvanceAssignmentPlanningModel {
public T doInsideTransaction();
}
/**
* Cancel operation
*/
void cancel();
/**
* Save task
*/

View file

@ -67,12 +67,9 @@
<!-- Control buttons -->
<hbox>
<button label="${i18n:_('Accept')}"
sclass="save-button global-action"
<button label="${i18n:_('Back')}"
sclass="back-button global-action"
onClick="advanceAssignmentController.accept();" />
<button label="${i18n:_('Cancel')}"
sclass="cancel-button global-action"
onClick="advanceAssignmentController.cancel();" />
</hbox>
</window>