/**
* OLAT - Online Learning and Training<br>
* http://www.olat.org
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* frentix GmbH, Switzerland, http://www.frentix.com
* <p>
*/
package org.olat.user.propertyhandlers.ui;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.table.DefaultColumnDescriptor;
import org.olat.core.gui.components.table.StaticColumnDescriptor;
import org.olat.core.gui.components.table.TableController;
import org.olat.core.gui.components.table.TableDataModel;
import org.olat.core.gui.components.table.TableEvent;
import org.olat.core.gui.components.table.TableGuiConfiguration;
import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.controller.BasicController;
import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
import org.olat.user.propertyhandlers.UserPropertyUsageContext;
import org.springframework.beans.factory.annotation.Autowired;
/**
*
* Description:<br>
* this class displays a table with all UserPropertyUsageContexts and the number
* of PropertyHandlers in each Context
*
* <P>
* Initial Date: 29.08.2011 <br>
*
* @author strentini
*/
public class UsrPropContextCfgTableController extends BasicController {
private TableController contextTableCtr;
private TableDataModel<Entry<String, UserPropertyUsageContext>> contTblModel;
private static final String CMD_EDITCONTEXT = "edit.context";
private UsrPropContextEditController contextEditCtr;
private CloseableModalController editBox;
@Autowired
private UsrPropCfgManager usrPropCfgMng;
public UsrPropContextCfgTableController(UserRequest ureq, WindowControl wControl) {
super(ureq, wControl);
// the context table
TableGuiConfiguration contTableConfig = new TableGuiConfiguration();
contTableConfig.setPageingEnabled(false);
contextTableCtr = new TableController(contTableConfig, ureq, wControl, getTranslator());
contextTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("upc.name", 0, null, ureq.getLocale()));
contextTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("upc.description", 1, null, ureq.getLocale()));
contextTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("upc.context.propcount", 2, null, ureq.getLocale()));
contextTableCtr.addColumnDescriptor(new StaticColumnDescriptor(CMD_EDITCONTEXT, "upc.edit", translate("upc.edit")));
listenTo(contextTableCtr);
Map<String, UserPropertyUsageContext> contexts = usrPropCfgMng.getUserPropertiesConfigObject().getUsageContexts();
List<Entry<String, UserPropertyUsageContext>> contextsList = new ArrayList<Entry<String, UserPropertyUsageContext>>(contexts.entrySet());
contTblModel = new UsrPropContextCfgTableModel(contextsList);
contextTableCtr.setTableDataModel(contTblModel);
putInitialPanel(contextTableCtr.getInitialComponent());
}
/**
*
*/
private void refreshView(){
Map<String, UserPropertyUsageContext> contexts = usrPropCfgMng.getUserPropertiesConfigObject().getUsageContexts();
List<Entry<String, UserPropertyUsageContext>> contextsList = new ArrayList<Entry<String, UserPropertyUsageContext>>(contexts.entrySet());
contTblModel = new UsrPropContextCfgTableModel(contextsList);
contextTableCtr.setTableDataModel(contTblModel);
}
@Override
protected void event(UserRequest ureq, Controller source, Event event) {
if (source.equals(contextTableCtr)) {
TableEvent tblEvent = (TableEvent) event;
Entry<String, UserPropertyUsageContext> contextRow = contTblModel.getObject(tblEvent.getRowId());
removeAsListenerAndDispose(editBox);
removeAsListenerAndDispose(contextEditCtr);
contextEditCtr = new UsrPropContextEditController(ureq, getWindowControl(), contextRow.getValue(), contextRow.getKey());
editBox = new CloseableModalController(getWindowControl(), translate("close"), contextEditCtr.getInitialComponent(),
true, translate("upc.context.edit") + " :: " + contextRow.getKey(), true);
listenTo(editBox);
editBox.activate();
} else if(source.equals(contextEditCtr)){
//nothing to do
} else if(source.equals(editBox)){
if(event.equals(CloseableModalController.CLOSE_MODAL_EVENT)){
// edit-popup was closed, refresh our table
refreshView();
}
}
}
@Override
protected void event(UserRequest ureq, Component source, Event event) {
// nothing to handle
}
@Override
protected void doDispose() {
//
}
}