From 403f7b3a040c6ec68d578169729e69f2932c4111 Mon Sep 17 00:00:00 2001 From: Gavin Cornwell Date: Fri, 21 Sep 2007 12:18:17 +0000 Subject: [PATCH] Newly converted dialogs now make use of the new subtitle feature of the dialog framework. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6850 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/web-client-config-dialogs.xml | 7 +- .../web/bean/ShowSystemInfoDialog.java | 68 ++-- .../web/bean/TrashcanItemDetailsDialog.java | 69 ++-- .../web/bean/groups/AddUsersDialog.java | 357 +++++++++--------- .../web/bean/groups/CreateGroupDialog.java | 121 +++--- source/web/WEB-INF/faces-config-beans.xml | 6 +- 6 files changed, 338 insertions(+), 290 deletions(-) diff --git a/config/alfresco/web-client-config-dialogs.xml b/config/alfresco/web-client-config-dialogs.xml index 5a349fe7ad..6d6a9aced2 100644 --- a/config/alfresco/web-client-config-dialogs.xml +++ b/config/alfresco/web-client-config-dialogs.xml @@ -414,8 +414,8 @@ description-id="change_password_description" error-message-id="error_wizard" /> + icon="/images/icons/details_large.gif" description-id="deleteditem_details_description" + show-ok-button="false" /> + icon="/images/icons/file_large.gif" title-id="system_info" show-ok-button="false"/> diff --git a/source/java/org/alfresco/web/bean/ShowSystemInfoDialog.java b/source/java/org/alfresco/web/bean/ShowSystemInfoDialog.java index 690abb61c7..d8506cfb55 100644 --- a/source/java/org/alfresco/web/bean/ShowSystemInfoDialog.java +++ b/source/java/org/alfresco/web/bean/ShowSystemInfoDialog.java @@ -29,40 +29,54 @@ import javax.faces.context.FacesContext; import org.alfresco.web.app.Application; import org.alfresco.web.bean.dialog.BaseDialogBean; +/** + * Implementation for the SystemInfo dialog. + * + * @author gavinc + */ public class ShowSystemInfoDialog extends BaseDialogBean { - private final static String MSG_CURRENT_USER = "current_user"; - private static final String LBL_CLOSE = "close"; + private static final String MSG_CURRENT_USER = "current_user"; + private static final String MSG_CLOSE = "close"; + private static final String MSG_VERSION = "version"; - private NavigationBean navigationBean; + protected AboutBean aboutBean; - @Override - protected String finishImpl(FacesContext context, String outcome) throws Exception - { - return null; - } + @Override + protected String finishImpl(FacesContext context, String outcome) throws Exception + { + return null; + } - public NavigationBean getNavigationBean() - { - return navigationBean; - } + public void setAboutBean(AboutBean aboutBean) + { + this.aboutBean = aboutBean; + } - public void setNavigationBean(NavigationBean navigationBean) - { - this.navigationBean = navigationBean; - } + @Override + public String getContainerSubTitle() + { + return Application.getMessage(FacesContext.getCurrentInstance(), MSG_CURRENT_USER) + ": " + + this.navigator.getCurrentUser().getUserName(); + } - @Override - public String getContainerDescription() - { - return Application.getMessage(FacesContext.getCurrentInstance(), MSG_CURRENT_USER) + " '" + navigationBean.getCurrentUser().getUserName() + "'"; - } + @Override + public String getContainerDescription() + { + StringBuilder builder = new StringBuilder(Application.getMessage( + FacesContext.getCurrentInstance(), MSG_VERSION)); + builder.append(": "); + builder.append(this.aboutBean.getEdition()); + builder.append(" - v"); + builder.append(this.aboutBean.getVersion()); + + return builder.toString(); + } - @Override - public String getCancelButtonLabel() - { - - return Application.getMessage(FacesContext.getCurrentInstance(), LBL_CLOSE); - } + @Override + public String getCancelButtonLabel() + { + return Application.getMessage(FacesContext.getCurrentInstance(), MSG_CLOSE); + } } diff --git a/source/java/org/alfresco/web/bean/TrashcanItemDetailsDialog.java b/source/java/org/alfresco/web/bean/TrashcanItemDetailsDialog.java index 4213c46739..c1c3a489cd 100644 --- a/source/java/org/alfresco/web/bean/TrashcanItemDetailsDialog.java +++ b/source/java/org/alfresco/web/bean/TrashcanItemDetailsDialog.java @@ -33,43 +33,40 @@ import org.alfresco.web.bean.repository.Node; public class TrashcanItemDetailsDialog extends TrashcanDialog { - private static final String MSG_DETAILS_OF = "details_of"; - private static final String MSG_ORIGINAL_LOCATION = "original_location"; - private static final String MSG_DELETEDITEM_DETAILS_DESCR = "deleteditem_details_description"; + private static final String MSG_DETAILS_OF = "details_of"; + private static final String MSG_ORIGINAL_LOCATION = "original_location"; + private static final String MSG_CLOSE = "close"; - private static final String MSG_CLOSE = "close"; + @Override + protected String finishImpl(FacesContext context, String outcome) throws Exception + { + return null; + } - @Override - protected String finishImpl(FacesContext context, String outcome) throws Exception - { - return null; - - } - - @Override - public String getContainerDescription() - { - Path path = (Path) property.getItem().getProperties().get("locationPath"); - return Application.getMessage(FacesContext.getCurrentInstance(), MSG_ORIGINAL_LOCATION) + ": " + path.toDisplayPath(nodeService) + "\n" - + Application.getMessage(FacesContext.getCurrentInstance(), MSG_DELETEDITEM_DETAILS_DESCR); - - } - - @Override - public String getContainerTitle() - { - return Application.getMessage(FacesContext.getCurrentInstance(), MSG_DETAILS_OF) + " '" + property.getItem().getName() + "'"; - } - - public Node getItem() - { - return property.getItem(); - } - - @Override - public String getCancelButtonLabel() - { - return Application.getMessage(FacesContext.getCurrentInstance(), MSG_CLOSE); - } + @Override + public String getContainerTitle() + { + return Application.getMessage(FacesContext.getCurrentInstance(), MSG_DETAILS_OF) + " '" + + property.getItem().getName() + "'"; + } + + @Override + public String getContainerSubTitle() + { + Path path = (Path) property.getItem().getProperties().get("locationPath"); + + return Application.getMessage(FacesContext.getCurrentInstance(), MSG_ORIGINAL_LOCATION) + ": " + + path.toDisplayPath(nodeService); + } + @Override + public String getCancelButtonLabel() + { + return Application.getMessage(FacesContext.getCurrentInstance(), MSG_CLOSE); + } + + public Node getItem() + { + return property.getItem(); + } } diff --git a/source/java/org/alfresco/web/bean/groups/AddUsersDialog.java b/source/java/org/alfresco/web/bean/groups/AddUsersDialog.java index b850b83846..408ee6ad55 100644 --- a/source/java/org/alfresco/web/bean/groups/AddUsersDialog.java +++ b/source/java/org/alfresco/web/bean/groups/AddUsersDialog.java @@ -53,199 +53,214 @@ import org.alfresco.web.ui.common.Utils; import org.alfresco.web.ui.common.component.UIGenericPicker; /** + * Implementation of the add user dialog. + * * @author YanO - */ -/** - * @author Administrator + * @author gavinc */ public class AddUsersDialog extends GroupsDialog { - private static final String BUTTON_FINISH = "finish_button"; + private static final String BUTTON_FINISH = "finish_button"; - /** selected users to be added to a group */ - private List usersForGroup; + /** selected users to be added to a group */ + private List usersForGroup; - /** datamodel for table of users added to group */ - private DataModel usersDataModel = null; + /** datamodel for table of users added to group */ + private DataModel usersDataModel = null; - @Override - public void init(Map parameters) - { - super.init(parameters); - usersForGroup = new ArrayList(); - } + @Override + public void init(Map parameters) + { + super.init(parameters); + usersForGroup = new ArrayList(); + } - @Override - protected String finishImpl(FacesContext context, String outcome) throws Exception - { - try - { - // add each selected user to the current group in turn - for (UserAuthorityDetails wrapper : this.usersForGroup) + @Override + protected String finishImpl(FacesContext context, String outcome) throws Exception + { + try + { + // add each selected user to the current group in turn + for (UserAuthorityDetails wrapper : this.usersForGroup) + { + properties.getAuthService().addAuthority(properties.getActionGroup(), wrapper.getAuthority()); + } + } + catch (Throwable err) + { + Utils.addErrorMessage(MessageFormat.format(Application.getMessage( + FacesContext.getCurrentInstance(), Repository.ERROR_GENERIC), err.getMessage()), err); + outcome = null; + } + setActionGroup(null); + return outcome; + } + + @Override + public String getContainerSubTitle() + { + return properties.getActionGroupName(); + } + + @Override + public boolean getFinishButtonDisabled() + { + return false; + } + + @Override + public String getFinishButtonLabel() + { + return Application.getMessage(FacesContext.getCurrentInstance(), BUTTON_FINISH); + } + + /** + * Query callback method executed by the Generic Picker component. This + * method is part of the contract to the Generic Picker, it is up to the + * backing bean to execute whatever query is appropriate and return the + * results. + * + * @param filterIndex Index of the filter drop-down selection + * @param contains Text from the contains textbox + * @return An array of SelectItem objects containing the results to display + * in the picker. + */ + public SelectItem[] pickerCallback(int filterIndex, final String contains) + { + final FacesContext context = FacesContext.getCurrentInstance(); + + UserTransaction tx = null; + try + { + RetryingTransactionHelper txHelper = Repository.getRetryingTransactionHelper(context);// getUserTransaction(context); + return txHelper.doInTransaction(new RetryingTransactionCallback() + { + public SelectItem[] execute() throws Exception { - properties.getAuthService().addAuthority(properties.getActionGroup(), wrapper.getAuthority()); + SelectItem[] items; + + // build xpath to match available User/Person objects + ServiceRegistry services = Repository.getServiceRegistry(context); + NodeRef peopleRef = properties.getPersonService().getPeopleContainer(); + String xpath = "*[like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "firstName, '%" + contains + + "%', false)" + " or " + "like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + + "lastName, '%" + contains + "%', false)]"; + + List nodes = services.getSearchService().selectNodes(peopleRef, xpath, null, + services.getNamespaceService(), false); + + ArrayList itemList = new ArrayList(nodes.size()); + for (NodeRef personRef : nodes) + { + String username = (String) nodeService.getProperty(personRef, ContentModel.PROP_USERNAME); + if (PermissionService.GUEST_AUTHORITY.equals(username) == false) + { + String firstName = (String) nodeService.getProperty(personRef, ContentModel.PROP_FIRSTNAME); + String lastName = (String) nodeService.getProperty(personRef, ContentModel.PROP_LASTNAME); + + SelectItem item = new SortableSelectItem(username, firstName + " " + lastName, lastName); + itemList.add(item); + } + } + items = new SelectItem[itemList.size()]; + itemList.toArray(items); + return items; } - } - catch (Throwable err) - { - Utils.addErrorMessage(MessageFormat.format(Application.getMessage(FacesContext.getCurrentInstance(), Repository.ERROR_GENERIC), err.getMessage()), err); - outcome = null; - } - setActionGroup(null); - return outcome; - } - - @Override - public boolean getFinishButtonDisabled() - { - return false; - } - - /** - * Query callback method executed by the Generic Picker component. This method is part of the contract to the Generic Picker, it is up to the backing bean to execute whatever - * query is appropriate and return the results. - * - * @param filterIndex Index of the filter drop-down selection - * @param contains Text from the contains textbox - * @return An array of SelectItem objects containing the results to display in the picker. - */ - public SelectItem[] pickerCallback(int filterIndex, final String contains) - { - final FacesContext context = FacesContext.getCurrentInstance(); - - UserTransaction tx = null; - try - { - RetryingTransactionHelper txHelper = Repository.getRetryingTransactionHelper(context);// getUserTransaction(context); - return txHelper.doInTransaction(new RetryingTransactionCallback() + }); + } + catch (Exception err) + { + Utils.addErrorMessage(MessageFormat.format(Application.getMessage( + FacesContext.getCurrentInstance(), Repository.ERROR_GENERIC), err.getMessage()), err); + try + { + if (tx != null) { - public SelectItem[] execute() throws Exception - { - SelectItem[] items; - - // build xpath to match available User/Person objects - ServiceRegistry services = Repository.getServiceRegistry(context); - NodeRef peopleRef = properties.getPersonService().getPeopleContainer(); - String xpath = "*[like(@" + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "firstName, '%" + contains + "%', false)" + " or " + "like(@" - + NamespaceService.CONTENT_MODEL_PREFIX + ":" + "lastName, '%" + contains + "%', false)]"; - - List nodes = services.getSearchService().selectNodes(peopleRef, xpath, null, services.getNamespaceService(), false); - - ArrayList itemList = new ArrayList(nodes.size()); - for (NodeRef personRef : nodes) - { - String username = (String) nodeService.getProperty(personRef, ContentModel.PROP_USERNAME); - if (PermissionService.GUEST_AUTHORITY.equals(username) == false) - { - String firstName = (String) nodeService.getProperty(personRef, ContentModel.PROP_FIRSTNAME); - String lastName = (String) nodeService.getProperty(personRef, ContentModel.PROP_LASTNAME); - - SelectItem item = new SortableSelectItem(username, firstName + " " + lastName, lastName); - itemList.add(item); - } - } - items = new SelectItem[itemList.size()]; - itemList.toArray(items); - return items; - } - }); - } - catch (Exception err) - { - Utils.addErrorMessage(MessageFormat.format(Application.getMessage(FacesContext.getCurrentInstance(), Repository.ERROR_GENERIC), err.getMessage()), err); - try - { - if (tx != null) - { - tx.rollback(); - } + tx.rollback(); } - catch (Exception tex) + } + catch (Exception tex) + { + } + return new SelectItem[0]; + } + } + + /** + * Add the selected User to the list for adding to a Group + */ + public void addSelectedUsers(ActionEvent event) + { + UIGenericPicker picker = (UIGenericPicker) event.getComponent().findComponent("picker"); + String[] results = picker.getSelectedResults(); + if (results != null) + { + for (int i = 0; i < results.length; i++) + { + String authority = results[i]; + + // check for same authority so not added twice + boolean foundExisting = false; + for (int n = 0; n < this.usersForGroup.size(); n++) { + UserAuthorityDetails wrapper = this.usersForGroup.get(n); + if (authority.equals(wrapper.getAuthority())) + { + foundExisting = true; + break; + } } - return new SelectItem[0]; - } - } - /** - * Add the selected User to the list for adding to a Group - */ - public void addSelectedUsers(ActionEvent event) - { - UIGenericPicker picker = (UIGenericPicker) event.getComponent().findComponent("picker"); - String[] results = picker.getSelectedResults(); - if (results != null) - { - for (int i = 0; i < results.length; i++) + if (foundExisting == false) { - String authority = results[i]; + StringBuilder label = new StringBuilder(48); - // check for same authority so not added twice - boolean foundExisting = false; - for (int n = 0; n < this.usersForGroup.size(); n++) - { - UserAuthorityDetails wrapper = this.usersForGroup.get(n); - if (authority.equals(wrapper.getAuthority())) - { - foundExisting = true; - break; - } - } + // build a display label showing the user person name + if (properties.getPersonService().personExists(authority) == true) + { + // found a Person with a User authority + NodeRef ref = properties.getPersonService().getPerson(authority); + String firstName = (String) this.nodeService.getProperty(ref, ContentModel.PROP_FIRSTNAME); + String lastName = (String) this.nodeService.getProperty(ref, ContentModel.PROP_LASTNAME); - if (foundExisting == false) - { - StringBuilder label = new StringBuilder(48); + // build a sensible label for display + label.append(firstName).append(' ').append(lastName); - // build a display label showing the user person name - if (properties.getPersonService().personExists(authority) == true) - { - // found a Person with a User authority - NodeRef ref = properties.getPersonService().getPerson(authority); - String firstName = (String) this.nodeService.getProperty(ref, ContentModel.PROP_FIRSTNAME); - String lastName = (String) this.nodeService.getProperty(ref, ContentModel.PROP_LASTNAME); - - // build a sensible label for display - label.append(firstName).append(' ').append(lastName); - - // add a wrapper object with the details to the results list for display - UserAuthorityDetails userDetails = new UserAuthorityDetails(label.toString(), authority); - this.usersForGroup.add(userDetails); - } - } + // add a wrapper object with the details to the results list + // for display + UserAuthorityDetails userDetails = new UserAuthorityDetails(label.toString(), authority); + this.usersForGroup.add(userDetails); + } } - } - } + } + } + } - /** - * Action handler called when the Remove button is pressed to remove a user from the results list - */ - public void removeUserSelection(ActionEvent event) - { - UserAuthorityDetails wrapper = (UserAuthorityDetails) this.usersDataModel.getRowData(); - if (wrapper != null) - { - this.usersForGroup.remove(wrapper); - } - } + /** + * Action handler called when the Remove button is pressed to remove a user + * from the results list + */ + public void removeUserSelection(ActionEvent event) + { + UserAuthorityDetails wrapper = (UserAuthorityDetails) this.usersDataModel.getRowData(); + if (wrapper != null) + { + this.usersForGroup.remove(wrapper); + } + } - /** - * @return Returns the usersDataModel. - */ - public DataModel getUsersDataModel() - { - if (this.usersDataModel == null) - { - this.usersDataModel = new ListDataModel(); - } + /** + * @return Returns the usersDataModel. + */ + public DataModel getUsersDataModel() + { + if (this.usersDataModel == null) + { + this.usersDataModel = new ListDataModel(); + } - this.usersDataModel.setWrappedData(this.usersForGroup); + this.usersDataModel.setWrappedData(this.usersForGroup); - return this.usersDataModel; - } - - @Override - public String getFinishButtonLabel() - { - return Application.getMessage(FacesContext.getCurrentInstance(), BUTTON_FINISH); - } + return this.usersDataModel; + } } diff --git a/source/java/org/alfresco/web/bean/groups/CreateGroupDialog.java b/source/java/org/alfresco/web/bean/groups/CreateGroupDialog.java index 926a71853b..1912660ce3 100644 --- a/source/java/org/alfresco/web/bean/groups/CreateGroupDialog.java +++ b/source/java/org/alfresco/web/bean/groups/CreateGroupDialog.java @@ -41,62 +41,81 @@ import org.alfresco.web.ui.common.Utils; public class CreateGroupDialog extends GroupsDialog { - private static final String MSG_ERR_EXISTS = "groups_err_exists"; + private static final String MSG_ERR_EXISTS = "groups_err_exists"; + private static final String MSG_BUTTON_NEW_GROUP = "new_group"; - private static final String BUTTON_NEW_GROUP = "new_group"; + @Override + public void init(Map parameters) + { + super.init(parameters); + properties.setName(""); + } - @Override - protected String finishImpl(FacesContext context, String outcome) throws Exception - { - try - { - // create new Group using Authentication Service - String groupName = properties.getAuthService().getName(AuthorityType.GROUP, properties.getName()); - if (properties.getAuthService().authorityExists(groupName) == false) - { - properties.getAuthService().createAuthority(AuthorityType.GROUP, properties.getActionGroup(), properties.getName()); - } - else - { - Utils.addErrorMessage(Application.getMessage(context, MSG_ERR_EXISTS)); - outcome = null; - } - } - catch (Throwable err) - { - Utils.addErrorMessage(MessageFormat.format(Application.getMessage(context, Repository.ERROR_GENERIC), err.getMessage()), err); + @Override + protected String finishImpl(FacesContext context, String outcome) throws Exception + { + try + { + // create new Group using Authentication Service + String groupName = properties.getAuthService().getName(AuthorityType.GROUP, properties.getName()); + if (properties.getAuthService().authorityExists(groupName) == false) + { + properties.getAuthService().createAuthority(AuthorityType.GROUP, properties.getActionGroup(), properties.getName()); + } + else + { + Utils.addErrorMessage(Application.getMessage(context, MSG_ERR_EXISTS)); outcome = null; - } - - if (outcome == null) - { - isFinished = false; - } - - return outcome; - } + } + } + catch (Throwable err) + { + Utils.addErrorMessage(MessageFormat.format(Application.getMessage( + context, Repository.ERROR_GENERIC), err.getMessage()), err); + outcome = null; + } - @Override - public void init(Map parameters) - { - super.init(parameters); - properties.setName(""); - } + if (outcome == null) + { + isFinished = false; + } - public void validateGroupName(FacesContext context, UIComponent component, Object value) throws ValidatorException - { - String name = (String) value; - if (name.indexOf('\'') != -1 || name.indexOf('"') != -1 || name.indexOf('\\') != -1) - { - String err = MessageFormat.format(Application.getMessage(context, "groups_err_group_name"), new Object[] { "', \", \\" }); - throw new ValidatorException(new FacesMessage(err)); - } - } + return outcome; + } - @Override - public String getFinishButtonLabel() - { - return Application.getMessage(FacesContext.getCurrentInstance(), BUTTON_NEW_GROUP); - } + @Override + public String getFinishButtonLabel() + { + return Application.getMessage(FacesContext.getCurrentInstance(), MSG_BUTTON_NEW_GROUP); + } + + @Override + public String getContainerSubTitle() + { + String subtitle = null; + + if (properties.getActionGroup() != null) + { + subtitle = properties.getActionGroupName(); + } + else + { + subtitle = properties.getGroupName(); + } + + return subtitle; + } + + public void validateGroupName(FacesContext context, UIComponent component, Object value) throws ValidatorException + { + String name = (String) value; + + if (name.indexOf('\'') != -1 || name.indexOf('"') != -1 || name.indexOf('\\') != -1) + { + String err = MessageFormat.format(Application.getMessage(context, "groups_err_group_name"), + new Object[] { "', \", \\" }); + throw new ValidatorException(new FacesMessage(err)); + } + } } diff --git a/source/web/WEB-INF/faces-config-beans.xml b/source/web/WEB-INF/faces-config-beans.xml index e195d35696..d29d58a936 100644 --- a/source/web/WEB-INF/faces-config-beans.xml +++ b/source/web/WEB-INF/faces-config-beans.xml @@ -4999,9 +4999,13 @@ session - navigationBean + navigator #{NavigationBean} + + aboutBean + #{AboutBean} +