package com.idega.user.presentation;
import java.util.Vector;
import com.idega.core.accesscontrol.data.PermissionGroup;
import com.idega.core.data.GenericGroupBMPBean;
import com.idega.data.GenericEntity;
import com.idega.idegaweb.IWApplicationContext;
import com.idega.presentation.IWContext;
import com.idega.presentation.Table;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.FramePane;
import com.idega.presentation.ui.HiddenInput;
import com.idega.presentation.ui.RadioGroup;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextArea;
import com.idega.presentation.ui.TextInput;
import com.idega.presentation.ui.Window;
import com.idega.user.business.GroupBusiness;
import com.idega.user.business.UserBusiness;
import com.idega.user.data.Group;
/**
* Title: User
* Description:
* Copyright: Copyright (c) 2001
* Company: idega.is
* @author 2000 - idega team - <a href="mailto:gummi@idega.is">Gu�mundur �g�st S�mundsson</a>
* @version 1.0
*/
public class CreateUserGroup extends Window {
private Text groupNameText;
private Text descriptionText;
private Text groupTypeText;
private TextInput groupNameField;
private TextArea descriptionField;
private RadioGroup groupTypeField;
private SubmitButton okButton;
private SubmitButton cancelButton;
private Vector groupType;
private Form myForm;
public static String okButtonParameterValue = "ok";
public static String cancelButtonParameterValue = "cancel";
public static String submitButtonParameterName = "submit";
public static String groupNameFieldParameterName = "groupName";
public static String descriptionFieldParameterName = "description";
public static String groupTypeFieldParameterName = "group_type";
//private UserBusiness business;
private String rowHeight = "37";
public CreateUserGroup() {
super();
this.groupType = new Vector();
this.setName("idegaWeb Builder - Stofna H�p");
this.setHeight(340);
this.setWidth(390);
this.setBackgroundColor("#d4d0c8");
this.myForm = new Form();
this.add(this.myForm);
//business = new UserBusiness();
initializeTexts();
initializeFields();
init();
//lineUpElements();
}
protected void initializeTexts(){
this.groupNameText = new Text("Group name:");
this.descriptionText = new Text("Description : ");
this.groupTypeText = new Text("Type: ");
}
protected void initializeFields(){
this.groupNameField = new TextInput(groupNameFieldParameterName);
this.groupNameField.setLength(20);
this.descriptionField = new TextArea(descriptionFieldParameterName);
this.descriptionField.setHeight(3);
this.descriptionField.setWidth(20);
this.groupTypeField = new RadioGroup(groupTypeFieldParameterName);
this.groupTypeField.setWidth(1);
this.okButton = new SubmitButton(" OK ",submitButtonParameterName,okButtonParameterValue);
this.cancelButton = new SubmitButton(" Cancel ",submitButtonParameterName,cancelButtonParameterValue);
}
public void init(){
this.addGroupType(Group.class);
this.addGroupType(PermissionGroup.class);
}
public void addGroupType(Class genricGroup){
this.groupType.add(genricGroup);
}
//public void lineUpElements(){
public void lineUpElements(IWContext iwc)throws Exception{
Table frameTable = new Table(1,3);
frameTable.setCellpadding(0);
frameTable.setCellspacing(0);
// nameTable begin
Table nameTable = new Table(1,4);
nameTable.setCellpadding(0);
nameTable.setCellspacing(0);
nameTable.setHeight(1,this.rowHeight);
nameTable.setHeight(2,this.rowHeight);
nameTable.add(this.groupNameText,1,1);
nameTable.add(this.groupNameField,1,2);
nameTable.add(this.descriptionText,1,3);
nameTable.add(this.descriptionField,1,4);
// nameTable end
// Property begin
int size = this.groupType.size();
if(size > 1){
Table propertyTable = new Table(2,1);
propertyTable.setCellpadding(0);
propertyTable.setCellspacing(0);
propertyTable.setHeight(1,this.rowHeight);
FramePane frPane = new FramePane("Type");
for (int i = 0; i < this.groupType.size(); i++){
String value = getGroupBusiness(iwc).getGroupType((Class)this.groupType.get(i));
//String value = ((Group)com.idega.user.data.GroupBMPBean.getStaticInstance((Class)groupType.get(i))).getGroupTypeValue();
String text = value.substring(1);
text = value.substring(0,1).toUpperCase() + text;
if(i==0){
this.groupTypeField.addRadioButton(value,new Text(text),true);
}else{
this.groupTypeField.addRadioButton(value,new Text(text));
}
}
frPane.add(this.groupTypeField);
frPane.setWidth(200);
propertyTable.add(frPane,1,1);
frameTable.add(propertyTable,1,2);
}else if (size == 1){
frameTable.add(new HiddenInput(((Group)GenericEntity.getStaticInstance((Class)this.groupType.get(0))).getGroupTypeValue()));
}else{
frameTable.add(new HiddenInput(groupTypeFieldParameterName,GenericGroupBMPBean.getStaticInstance().getGroupTypeValue()));
}
// Property end
// buttonTable begin
Table buttonTable = new Table(3,1);
buttonTable.setCellpadding(0);
buttonTable.setCellspacing(0);
buttonTable.setHeight(1,this.rowHeight);
buttonTable.setWidth(2,"5");
buttonTable.add(this.okButton,1,1);
buttonTable.add(this.cancelButton,3,1);
// buttonTable end
frameTable.add(nameTable,1,1);
frameTable.add(buttonTable,1,3);
frameTable.setAlignment(1,3,"right");
this.myForm.add(frameTable);
}
public void commitCreation(IWContext iwc) throws Exception{
String name = iwc.getParameter(CreateUserGroup.groupNameFieldParameterName);
String description = iwc.getParameter(CreateUserGroup.descriptionFieldParameterName);
String type = iwc.getParameter(CreateUserGroup.groupTypeFieldParameterName);
if(type == null){
throw new Exception("no group_type selected");
}
this.getGroupBusiness(iwc).createGroup(name,description,type);
}
public void main(IWContext iwc) throws Exception {
lineUpElements(iwc);
String submit = iwc.getParameter("submit");
if(submit != null){
if(submit.equals("ok")){
this.commitCreation(iwc);
this.close();
this.setParentToReload();
}else if(submit.equals("cancel")){
this.close();
}
}
}
public UserBusiness getUserBusiness(IWApplicationContext iwc){
UserBusiness business = null;
if(business == null){
try{
business = (UserBusiness)com.idega.business.IBOLookup.getServiceInstance(iwc,UserBusiness.class);
}
catch(java.rmi.RemoteException rme){
throw new RuntimeException(rme.getMessage());
}
}
return business;
}
// public UserGroupBusiness getUserGroupBusiness(IWApplicationContext iwc){
// UserGroupBusiness business = null;
// if(business == null){
// try{
// business = (UserGroupBusiness)com.idega.business.IBOLookup.getServiceInstance(iwc,UserGroupBusiness.class);
// }
// catch(java.rmi.RemoteException rme){
// throw new RuntimeException(rme.getMessage());
// }
// }
// return business;
// }
public GroupBusiness getGroupBusiness(IWApplicationContext iwc){
GroupBusiness business = null;
if(business == null){
try{
business = (GroupBusiness)com.idega.business.IBOLookup.getServiceInstance(iwc,GroupBusiness.class);
}
catch(java.rmi.RemoteException rme){
throw new RuntimeException(rme.getMessage());
}
}
return business;
}
}