Changeset 17847

Show
Ignore:
Timestamp:
08/07/08 11:05:04 (3 weeks ago)
Author:
carlos
Message:

Added "Unindent" and "Indent" features to the Indented Beta view.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/core/src/net/project/schedule/mvc/handler/main/IndentHandler.java

    r16593 r17847  
    3131import javax.servlet.http.HttpServletRequest; 
    3232import javax.servlet.http.HttpServletResponse; 
     33 
     34import org.apache.commons.lang.StringUtils; 
    3335 
    3436import net.project.database.DatabaseUtils; 
     
    7375        String parentTask = request.getParameter("parentTask"); 
    7476        String idList[] = request.getParameterValues("selected"); 
     77        if(null == idList){ 
     78            idList = StringUtils.split((String) request.getParameter("selectedIds"), ','); 
     79        } 
    7580 
    7681        ErrorReporter er = TaskListUtils.indentTasks(idList, parentTask, schedule); 
  • trunk/core/src/net/project/schedule/mvc/handler/main/UnindentHandler.java

    r16593 r17847  
    2323import javax.servlet.http.HttpServletRequest; 
    2424import javax.servlet.http.HttpServletResponse; 
     25 
     26import org.apache.commons.lang.StringUtils; 
    2527 
    2628import net.project.database.DatabaseUtils; 
     
    6264 
    6365        String idList[] = request.getParameterValues("selected"); 
     66        if(null == idList){ 
     67            idList = StringUtils.split((String) request.getParameter("selectedIds"), ','); 
     68        } 
    6469 
    6570        TaskListUtils.unindentTasks(idList, schedule); 
  • trunk/core/web/jsp/schedule/Main.jsp

    r17827 r17847  
    143143<template:import type="javascript" src="/src/dhtml/tree.js" /> 
    144144<template:import type="javascript" src="/src/dhtml/xmlrequest.js" /> 
     145<template:import type="javascript" src="/src/blogit.js" /> 
    145146<template:import type="javascript" src="/src/components/gridView.js" /> 
    146 <template:import type="javascript" src="/src/blogit.js" /> 
    147147<template:import type="javascript" src="/src/indentedView.js" /> 
    148148 
     
    277277    flatView.init('schedule-grid'); 
    278278    flatView.addEditCellHandling(JSPRootURL + '/ajax/schedule/WorkplanUpdate', JSPRootURL + '/ajax/schedule/WorkplanUpdateValidator'); 
    279     setRowContextMenu(flatView); 
     279    setRowContextMenu(flatView, false); 
    280280} 
    281281 
     
    287287    setTreeGridColumns(indentedView); 
    288288    indentedView.init('schedule-grid'); 
    289     setRowContextMenu(indentedView); 
     289    setRowContextMenu(indentedView, true); 
    290290} 
    291291 
     
    333333} 
    334334 
    335 function setRowContextMenu(grid){ 
     335function setRowContextMenu(grid, isTree){ 
    336336        var menuItems = new Array(); 
    337337        if(null != grid){ 
     
    349349         menuItems[menuItems.length] = addUpdatePercentageWorkMenuItem(grid); 
    350350         menuItems[menuItems.length] = addViewTaskPropertiesMenuItem(grid); 
     351         if(isTree){ 
     352            menuItems[menuItems.length] = addIndentTaskMenuItem(grid); 
     353            menuItems[menuItems.length] = addUnIndentTaskMenuItem(grid); 
     354         } 
    351355             grid.addRowContextMenu(menuItems); 
    352356         } 
     
    466470            extAlert('Error', '<display:get name="prm.global.javascript.verifyselection.noselection.error.message" />', Ext.MessageBox.ERROR); 
    467471        } 
     472    }; // eo handler 
     473    return item; 
     474} 
     475 
     476function addIndentTaskMenuItem(grid){ 
     477    var item = {}; 
     478    item.text = '<display:get name="all.global.toolbar.schedule.taskright" />'; 
     479    item.handler = function (){ 
     480        var result = grid.getSelectedAdjoiningRowIdsFromGrid(); 
     481        var parent = result.parent; 
     482        var ids = result.ids; 
     483        switch (parent){ 
     484            case -1: 
     485                var errorMessage = '<display:get name="prm.global.javascript.verifyselection.noselection.error.message" />'; 
     486                extAlert('Error', errorMessage , Ext.MessageBox.ERROR); 
     487                break; 
     488            case -2: 
     489                var errorMessage = '<prm.schedule.main.cannotindentfirsttask.error.message" />'; 
     490                extAlert('Error', errorMessage , Ext.MessageBox.ERROR); 
     491                break; 
     492            case -3: 
     493                var errorMessage = '<prm.global.javascript.verifyadjoiningselection.error.message" />'; 
     494                extAlert('Error', errorMessage , Ext.MessageBox.ERROR); 
     495                break; 
     496            default: 
     497            theForm.theAction.value = "/MainProcessing/Indent"; 
     498            theForm.parentTask.value = parent; 
     499            theForm.action.value = "<%=Action.MODIFY%>"; 
     500            theForm.selectedIds.value = ids; 
     501            theForm.target = "_self"; 
     502            theForm.submit(); 
     503        } // eo switch 
    468504    }; // eo handler 
    469505    return item; 
     
    608644        } else{ 
    609645            extAlert('Error', '<display:get name="prm.global.javascript.verifyselection.noselection.error.message" />', Ext.MessageBox.ERROR); 
     646        } 
     647    }; // eo handler 
     648    return item; 
     649} 
     650 
     651function addUnIndentTaskMenuItem(grid){ 
     652    var item = {}; 
     653    item.text = '<display:get name="all.global.toolbar.schedule.taskleft" />'; 
     654    item.handler = function (){ 
     655        var ids = grid.getSelectedRowIdsFromGrid(); 
     656        if(ids != -1){ 
     657            theForm.theAction.value = "/MainProcessing/Unindent"; 
     658            theForm.action.value = "<%=Action.MODIFY%>"; 
     659            theForm.selectedIds.value = ids; 
     660            theForm.target = "_self"; 
     661            theForm.submit(); 
     662        }else{ 
     663            var errorMessage = '<display:get name="prm.global.javascript.verifyselection.noselection.error.message" />'; 
     664            extAlert('Error', errorMessage , Ext.MessageBox.ERROR); 
    610665        } 
    611666    }; // eo handler 
  • trunk/core/web/src/indentedView.js

    r17827 r17847  
    311311    return ids; 
    312312}; 
     313 
     314TreeGrid.prototype.getSelectedAdjoiningRowIdsFromGrid = function getSelectedAdjoiningRowIdsFromGrid(){ 
     315    var result = {}; 
     316 
     317    // Selected records are driven by highligthed grid rows 
     318    var selectionModel = this.getSelectionModel(); 
     319    var rowCount = selectionModel.getCount(); 
     320     
     321    // Test at least one row was selected 
     322    if(rowCount == 0){ 
     323        result.parent = -1; 
     324        return result; 
     325    } 
     326     
     327    var selectedRows = selectionModel.getSelections(); 
     328    var ids = new Array(); 
     329    // Check it is not selected the first row 
     330    if(selectionModel.isSelected(0)){ 
     331        result.parent = -2; 
     332        return result; 
     333    } 
     334    // Now the selected row is its parent 
     335    var temp = new Array(); 
     336    temp[0] = selectedRows[0]; 
     337    selectionModel.selectRecords(temp); 
     338    selectionModel.selectPrevious(); 
     339    result.parent = selectionModel.getSelected().id; 
     340     
     341    // Check selected rows (before getting the parent) are in sequence. 
     342    var startSelection = selectedRows[0].get('sequence'); 
     343    ids[ids.length] = selectedRows[0].id; 
     344    for(var i = 1; i < selectedRows.length; i++){ 
     345        if(selectedRows[i].get('sequence') != (startSelection + 1)){ 
     346            result.parent = -3; 
     347            return result; 
     348        } else{ 
     349            ids[ids.length] = selectedRows[i].id; 
     350        } 
     351    } 
     352    result.ids = ids; 
     353    return result; 
     354};