Package org.projectforge.web.task

Source Code of org.projectforge.web.task.TaskEditPage

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 3 of the License.
//
// This community edition is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
// Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, see http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////

package org.projectforge.web.task;

import org.apache.log4j.Logger;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.projectforge.common.NumberHelper;
import org.projectforge.fibu.kost.Kost2DO;
import org.projectforge.fibu.kost.Kost2Dao;
import org.projectforge.task.TaskDO;
import org.projectforge.task.TaskDao;
import org.projectforge.task.TaskHelper;
import org.projectforge.task.TaskTree;
import org.projectforge.web.access.AccessListPage;
import org.projectforge.web.fibu.ISelectCallerPage;
import org.projectforge.web.gantt.GanttChartEditPage;
import org.projectforge.web.timesheet.TimesheetEditPage;
import org.projectforge.web.timesheet.TimesheetListPage;
import org.projectforge.web.wicket.AbstractEditPage;
import org.projectforge.web.wicket.EditPage;
import org.projectforge.web.wicket.WicketUtils;
import org.projectforge.web.wicket.components.ContentMenuEntryPanel;

@EditPage(defaultReturnPage = TaskTreePage.class)
public class TaskEditPage extends AbstractEditPage<TaskDO, TaskEditForm, TaskDao> implements ISelectCallerPage
{
  public static final String PARAM_PARENT_TASK_ID = "parentTaskId";

  private static final long serialVersionUID = 5176663429783524587L;

  private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(TaskEditPage.class);

  @SpringBean(name = "taskDao")
  private TaskDao taskDao;

  @SpringBean(name = "taskTree")
  private TaskTree taskTree;

  @SpringBean(name = "kost2Dao")
  private Kost2Dao kost2Dao;

  /**
   * Used by the TutorialPage.
   * @param task
   */
  public TaskEditPage(final TaskDO task)
  {
    super(new PageParameters(), "task");
    super.init(task);
    addTopMenuPanel();
  }

  public TaskEditPage(final PageParameters parameters)
  {
    super(parameters, "task");
    init();
    addTopMenuPanel();
    final Integer parentTaskId = WicketUtils.getAsInteger(parameters, PARAM_PARENT_TASK_ID);
    if (NumberHelper.greaterZero(parentTaskId) == true) {
      taskDao.setParentTask(getData(), parentTaskId);
    }
  }

  @Override
  protected TaskDao getBaseDao()
  {
    return taskDao;
  }

  @Override
  protected TaskEditForm newEditForm(final AbstractEditPage< ? , ? , ? > parentPage, final TaskDO data)
  {
    return new TaskEditForm(this, data);
  }

  /**
   * @see org.projectforge.web.fibu.ISelectCallerPage#select(java.lang.String, java.lang.Integer)
   */
  public void select(final String property, final Object selectedValue)
  {
    if ("parentTaskId".equals(property) == true) {
      taskDao.setParentTask(getData(), (Integer) selectedValue);
    } else if ("ganttPredecessorId".equals(property) == true) {
      taskDao.setGanttPredecessor(getData(), (Integer) selectedValue);
    } else if ("responsibleUserId".equals(property) == true) {
      taskDao.setResponsibleUser(getData(), (Integer) selectedValue);
    } else if ("kost2Id".equals(property) == true) {
      final Integer kost2Id = (Integer) selectedValue;
      if (kost2Id != null) {
        final Kost2DO kost2 = kost2Dao.getById(kost2Id);
        if (kost2 != null) {
          final String newKost2String = TaskHelper.addKost2(taskTree, getData(), kost2);
          getData().setKost2BlackWhiteList(newKost2String);
          form.kost2BlackWhiteTextField.modelChanged();
        }
      }
    } else {
      log.error("Property '" + property + "' not supported for selection.");
    }
  }

  /**
   * @see org.projectforge.web.fibu.ISelectCallerPage#unselect(java.lang.String)
   */
  public void unselect(final String property)
  {
    if ("parentTaskId".equals(property) == true) {
      getData().setParentTask(null);
    } else if ("ganttPredecessorId".equals(property) == true) {
      getData().setGanttPredecessor(null);
    } else if ("responsibleUserId".equals(property) == true) {
      getData().setResponsibleUser(null);
    } else {
      log.error("Property '" + property + "' not supported for selection.");
    }
  }

  /**
   * @see org.projectforge.web.fibu.ISelectCallerPage#cancelSelection(java.lang.String)
   */
  public void cancelSelection(final String property)
  {
    // Do nothing.
  }

  @SuppressWarnings("serial")
  private void addTopMenuPanel()
  {
    if (isNew() == false) {
      final Integer id = form.getData().getId();
      ContentMenuEntryPanel menu = new ContentMenuEntryPanel(getNewContentMenuChildId(), new Link<Void>(ContentMenuEntryPanel.LINK_ID) {
        @Override
        public void onClick()
        {
          final PageParameters params = new PageParameters();
          params.set(PARAM_PARENT_TASK_ID, id);
          final TaskEditPage taskEditPage = new TaskEditPage(params);
          taskEditPage.setReturnToPage(TaskEditPage.this);
          setResponsePage(taskEditPage);
        };
      }, getString("task.menu.addSubTask"));
      addContentMenuEntry(menu);

      menu = new ContentMenuEntryPanel(getNewContentMenuChildId(), new Link<Void>(ContentMenuEntryPanel.LINK_ID) {
        @Override
        public void onClick()
        {
          final PageParameters params = new PageParameters();
          params.add(TimesheetEditPage.PARAMETER_KEY_TASK_ID, id);
          final TimesheetEditPage timesheetEditPage = new TimesheetEditPage(params);
          timesheetEditPage.setReturnToPage(TaskEditPage.this);
          setResponsePage(timesheetEditPage);
        };
      }, getString("task.menu.addTimesheet"));
      addContentMenuEntry(menu);

      final BookmarkablePageLink<Void> showTimesheetsLink = new BookmarkablePageLink<Void>("link", TimesheetListPage.class);
      showTimesheetsLink.getPageParameters().set(TimesheetListPage.PARAMETER_KEY_TASK_ID, id);
      menu = new ContentMenuEntryPanel(getNewContentMenuChildId(), showTimesheetsLink, getString("task.menu.showTimesheets"));
      addContentMenuEntry(menu);

      menu = new ContentMenuEntryPanel(getNewContentMenuChildId(), new Link<Void>(ContentMenuEntryPanel.LINK_ID) {
        @Override
        public void onClick()
        {
          final PageParameters params = new PageParameters();
          params.set(GanttChartEditPage.PARAM_KEY_TASK, id);
          final GanttChartEditPage ganttChartEditPage = new GanttChartEditPage(params);
          ganttChartEditPage.setReturnToPage(TaskEditPage.this);
          setResponsePage(ganttChartEditPage);
        };
      }, getString("gantt.title.add"));
      addContentMenuEntry(menu);

      final BookmarkablePageLink<Void> showAccessRightsLink = new BookmarkablePageLink<Void>("link", AccessListPage.class);
      if (form.getData().getId() != null) {
        showAccessRightsLink.getPageParameters().set(AccessListPage.PARAMETER_KEY_TASK_ID, form.getData().getId());
      }
      final ContentMenuEntryPanel extendedMenu = contentMenuBarPanel.ensureAndAddExtendetMenuEntry();
      menu = new ContentMenuEntryPanel(extendedMenu.newSubMenuChildId(), showAccessRightsLink, getString("task.menu.showAccessRights"));
      extendedMenu.addSubMenuEntry(menu);
    }
  }

  @Override
  protected Logger getLogger()
  {
    return log;
  }
}
TOP

Related Classes of org.projectforge.web.task.TaskEditPage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.