package se.idega.idegaweb.commune.presentation;
import java.util.Collection;
import java.util.Iterator;
import com.idega.core.builder.data.ICPage;
import com.idega.data.IDOLookup;
import com.idega.idegaweb.IWApplicationContext;
import com.idega.presentation.ExceptionWrapper;
import com.idega.presentation.IWContext;
import com.idega.presentation.PresentationObject;
import com.idega.presentation.Table;
import com.idega.presentation.text.Break;
import com.idega.presentation.text.Link;
import com.idega.presentation.text.Text;
import com.idega.user.business.GroupBusiness;
import com.idega.user.data.Group;
import com.idega.user.data.GroupHome;
import com.idega.user.data.User;
/**
* @author <a href="mailto:tryggvi@idega.is">Tryggvi Larusson</a>
* @version 1.0
*/
public class ManagerListView extends CommuneBlock {
private final static String IW_BUNDLE_IDENTIFIER = "se.idega.idegaweb.commune";
private final static int ACTION_VIEW_MANAGER_LIST = 2;
private final static int ACTION_VIEW_MANAGER = 3;
final static String PARAM_MANAGER_ID = ManagerView.PARAM_MANAGER_ID;
final static String PARAM_MANAGER_GROUP_ID=ManagerGroupListView.PARAM_MANAGER_GROUP_ID;
private Table mainTable = null;
private int managerPageID = -1;
private int groupID=-1;
private boolean addHeader=true;
public String getBundleIdentifier() {
return IW_BUNDLE_IDENTIFIER;
}
public void main(IWContext iwc)throws Exception {
try {
initGroupID(iwc);
int action = parseAction(iwc);
//System.out.println("main: action="+action);
switch (action) {
case ACTION_VIEW_MANAGER_LIST :
viewManagerList(iwc);
break;
case ACTION_VIEW_MANAGER :
viewManager();
break;
default :
viewNoGroup();
break;
}
super.add(mainTable);
} catch (Exception e) {
super.add(new ExceptionWrapper(e, this));
}
}
/**
* Method initGroupID.
* @param iwc
*/
private void initGroupID(IWContext iwc) {
if(iwc.isParameterSet(PARAM_MANAGER_GROUP_ID)){
try{
int i = Integer.parseInt(iwc.getParameter(PARAM_MANAGER_GROUP_ID));
groupID=i;
}
catch(NumberFormatException ne){
}
}
}
private int parseAction(IWContext iwc) {
int action = -1;
if(groupID!=-1){
action = ACTION_VIEW_MANAGER_LIST;
}
if(iwc.isParameterSet(PARAM_MANAGER_ID)){
action = ACTION_VIEW_MANAGER;
}
return action;
}
public Object clone(){
ManagerListView view = (ManagerListView)super.clone();
if(mainTable!=null){
view.mainTable=(Table)mainTable.clone();
}
return view;
}
public void add(PresentationObject po) {
if (mainTable == null) {
mainTable = new Table();
mainTable.setCellpadding(0);
mainTable.setCellspacing(0);
//mainTable.setColor(getBackgroundColor());
mainTable.setWidth("100%");
}
mainTable.add(po);
}
/**
* Method viewNoGroups.
* @param iwc
*/
private void viewNoGroup() {
add(getSmallText(localize("managerlistview.no_group_set", "No group selected")));
}
private void viewManagerList(IWContext iwc) throws Exception {
//System.out.println("viewManagerList()");
//add(getLocalizedHeader("managerlistview.managers", "Managers:"));
Group topGroup = getGroup();
if(addHeader){
String header = topGroup.getName();
add(getHeader(header));
add(new Break(2));
}
//if (iwc.isLoggedOn()) {
//Collection users = getCommuneUserBusiness(iwc).getAllCommuneAdministrators();
Collection users = getGroupBusiness(iwc).getUsersDirectlyRelated(topGroup);
if (users != null & !users.isEmpty()) {
Table table = new Table();
table.setCellpadding(getCellpadding());
table.setCellspacing(getCellspacing());
int row = 1;
table.add(getSmallHeader(localize("managerlistview.name", "Name")), 1, row);
table.add(getSmallHeader(localize("managerlistview.description", "Description")), 2, row++);
User user = null;
Link userName = null;
Text description = null;
if (users != null) {
Iterator iter = users.iterator();
while (iter.hasNext()) {
try {
user = (User) iter.next();
userName = getSmallLink(user.getName());
if(managerPageID!=-1){
userName.setPage(managerPageID);
}
userName.addParameter(PARAM_MANAGER_ID,user.getPrimaryKey().toString());
table.add(userName, 1, row);
if (user.getDescription() != null) {
description = getSmallText(user.getDescription());
table.add(description, 2, row);
}
}
catch (Exception e) {
}
table.setRowVerticalAlignment(row, Table.VERTICAL_ALIGN_TOP);
row++;
}
}
add(table);
}
else {
add(getSmallText(localize("managerlistview.no_managers", "No managers")));
}
}
private void viewManager() throws Exception {
//System.out.println("viewManager()");
add(new ManagerView());
}
/*
private void viewCase(IWContext iwc)throws Exception{
Message msg = getMessage(iwc.getParameter(PARAM_MESSAGE_ID),iwc);
getMessageBusiness(iwc).markMessageAsRead(msg);
add(getLocalizedHeader("message.message","Message"));
add(new Break(2));
add(getLocalizedText("message.from","From"));
add(getText(": "));
//add(getLink(msg.getSenderName()));
add(new Break(2));
add(getLocalizedText("message.date","Date"));
add(getText(": "+(new IWTimestamp(msg.getCreated())).getLocaleDate(iwc)));
add(new Break(2));
add(getLocalizedText("message.subject","Subject"));
add(getText(": "+msg.getSubject()));
add(new Break(2));
add(getText(msg.getBody()));
add(new Break(2));
Table t = new Table();
t.setWidth("100%");
t.setAlignment(1,1,"right");
Link l = getLocalizedLink("message.back", "Back");
l.addParameter(PARAM_VIEW_MESSAGE_LIST,"true");
l.setAsImageButton(true);
t.add(l,1,1);
add(t);
}
private void showDeleteInfo(IWContext iwc)throws Exception{
String[] ids = iwc.getParameterValues(PARAM_MESSAGE_ID);
int msgId = 0;
int nrOfMessagesToDelete = 0;
if(ids!=null){
nrOfMessagesToDelete = ids.length;
msgId = Integer.parseInt(ids[0]);
}
if(nrOfMessagesToDelete==1){
add(getLocalizedHeader("message.delete_message","Delete message"));
}else{
add(getLocalizedHeader("message.delete_messages","Delete messages"));
}
add(new Break(2));
String s = null;
if(nrOfMessagesToDelete==0){
s = localize("message.no_messages_to_delete","No messages selected. You have to mark the message(s) to delete.");
}else if(nrOfMessagesToDelete==1){
Message msg = getMessageBusiness(iwc).getUserMessage(msgId);
s = localize("message.one_message_to_delete","Do you really want to delete the message with subject: ")+msg.getSubject()+"?";
}else{
s = localize("message.messages_to_delete","Do you really want to delete the selected messages?");
}
Table t = new Table(1,5);
t.setWidth("100%");
t.add(getText(s),1,1);
t.setAlignment(1,1,"center");
if(nrOfMessagesToDelete==0){
Link l = getLocalizedLink("message.back","back");
l.addParameter(PARAM_VIEW_MESSAGE_LIST,"true");
l.setAsImageButton(true);
t.add(l,1,4);
}else{
Link l = getLocalizedLink("message.ok","OK");
l.addParameter(PARAM_DELETE_MESSAGE,"true");
for(int i=0; i<ids.length; i++){
l.addParameter(PARAM_MESSAGE_ID,ids[i]);
}
l.setAsImageButton(true);
t.add(l,1,4);
t.add(getText(" "),1,4);
l = getLocalizedLink("message.cancel","Cancel");
l.addParameter(PARAM_VIEW_MESSAGE_LIST,"true");
l.setAsImageButton(true);
t.add(l,1,4);
}
t.setAlignment(1,4,"center");
add(t);
}
private void deleteMessage(IWContext iwc)throws Exception{
String[] ids = iwc.getParameterValues(PARAM_MESSAGE_ID);
for(int i=0; i<ids.length; i++){
getMessageBusiness(iwc).deleteUserMessage(Integer.parseInt(ids[i]));
}
}*/
/* Commented out since it is never used...
private CaseBusiness getCaseBusiness(IWContext iwc) throws Exception {
return (CaseBusiness) com.idega.business.IBOLookup.getServiceInstance(iwc, CaseBusiness.class);
}*/
/* Commented out since it is never used...
private CommuneCaseBusiness getCommuneCaseBusiness(IWContext iwc) throws Exception {
return (CommuneCaseBusiness) com.idega.business.IBOLookup.getServiceInstance(iwc, CommuneCaseBusiness.class);
}*/
/* Commented out since it is never used...
private UserBusiness getUserBusiness(IWContext iwc) throws Exception {
return (UserBusiness) com.idega.business.IBOLookup.getServiceInstance(iwc, UserBusiness.class);
}*/
/* Commented out since it is never used...
private CommuneUserBusiness getCommuneUserBusiness(IWContext iwc) throws Exception {
return (CommuneUserBusiness) com.idega.business.IBOLookup.getServiceInstance(iwc, CommuneUserBusiness.class);
}*/
public void setManagerViewPage(ICPage page) {
setManagerViewPage(((Integer)page.getPrimaryKey()).intValue());
}
public void setManagerViewPage(int ib_page_id) {
managerPageID = ib_page_id;
}
public int getManagerViewPage() {
return managerPageID;
}
/**
* Returns the groupID.
* @return int
*/
public int getGroupID() {
return groupID;
}
/**
* Sets the groupID.
* @param groupID The groupID to set
*/
public void setGroupID(int groupID) {
this.groupID = groupID;
}
public void setGroup(Group group){
int groupID = ((Integer)group.getPrimaryKey()).intValue();
setGroupID(groupID);
}
/**
* Returns the top group to display users under.
* @return Group
*/
private Group getGroup() {
try{
GroupHome gHome = (GroupHome)IDOLookup.getHome(Group.class);
return gHome.findByPrimaryKey(new Integer(getGroupID()));
}
catch(Exception e){
throw new RuntimeException(e.getMessage());
}
}
protected GroupBusiness getGroupBusiness(IWApplicationContext iwac)throws Exception{
return (GroupBusiness)com.idega.business.IBOLookup.getServiceInstance(iwac,GroupBusiness.class);
}
/**
* Returns the addHeader.
* @return boolean
*/
public boolean getIfAddHeader() {
return addHeader;
}
/**
* Sets the addHeader.
* @param addHeader The addHeader to set
*/
public void setAddHeader(boolean addHeader) {
this.addHeader = addHeader;
}
}