diff --git a/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/PublicPersonalProfile.java b/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/PublicPersonalProfile.java index 423226b5b..376211778 100644 --- a/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/PublicPersonalProfile.java +++ b/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/contenttypes/PublicPersonalProfile.java @@ -53,8 +53,7 @@ public class PublicPersonalProfile implements CustomizedPreviewLink { private static final PublicPersonalProfileConfig config = - PublicPersonalProfiles. - getConfig(); + PublicPersonalProfiles.getConfig(); public static final String PROFILE_URL = "profileUrl"; public static final String LINK_LIST_NAME = "publicPersonalProfileNavItems"; public static final String POSITION = "position"; @@ -108,14 +107,14 @@ public class PublicPersonalProfile * * * return (GenericPerson) DomainObjectFactory.newInstance(dobj); - } + } */ final GenericPersonBundle bundle = getPublicPersonalProfileBundle().getOwner(); if (bundle == null) { return null; } else { return (GenericPerson) bundle.getPrimaryInstance(); - } + } } /** @@ -132,7 +131,7 @@ public class PublicPersonalProfile * * if (null != owner) { Assert.exists(owner, GenericPerson.class); * bundle.add(OWNER, owner.getContentBundle()); - } + } */ getPublicPersonalProfileBundle().setOwner(owner); } @@ -197,4 +196,5 @@ public class PublicPersonalProfile return String.format("/profiles/preview/%s/", getProfileUrl()); } } + } diff --git a/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/publicpersonalprofile/PublicPersonalProfileAppManager.java b/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/publicpersonalprofile/PublicPersonalProfileAppManager.java index cce59f2dd..214d5b198 100644 --- a/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/publicpersonalprofile/PublicPersonalProfileAppManager.java +++ b/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/publicpersonalprofile/PublicPersonalProfileAppManager.java @@ -20,6 +20,7 @@ package com.arsdigita.cms.publicpersonalprofile; import com.arsdigita.bebop.SimpleContainer; import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager; +import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer; /** * @@ -32,8 +33,11 @@ public class PublicPersonalProfileAppManager extends AbstractSingletonApplicatio return PublicPersonalProfiles.class; } - public SimpleContainer getApplicationAdminForm() { - return new PublicPersonalProfilesAdminPanel(); + public ApplicationInstanceAwareContainer getApplicationAdminForm() { + final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer(); + container.add(new PublicPersonalProfilesAdminPanel()); + + return container; } diff --git a/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/publicpersonalprofile/ui/PublicPersonalProfileNavItemsAddForm.java b/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/publicpersonalprofile/ui/PublicPersonalProfileNavItemsAddForm.java index 8943a446d..f13362c9f 100644 --- a/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/publicpersonalprofile/ui/PublicPersonalProfileNavItemsAddForm.java +++ b/ccm-cms-publicpersonalprofile/src/com/arsdigita/cms/publicpersonalprofile/ui/PublicPersonalProfileNavItemsAddForm.java @@ -134,7 +134,7 @@ public class PublicPersonalProfileNavItemsAddForm panel.add(generatorField); saveCancelSection = new SaveCancelSection(); - super.add(saveCancelSection, ColumnPanel.FULL_WIDTH | ColumnPanel.LEFT); + add(saveCancelSection, ColumnPanel.FULL_WIDTH | ColumnPanel.LEFT); addInitListener(this); addProcessListener(this); diff --git a/ccm-cms/src/com/arsdigita/cms/ContentCenterAppManager.java b/ccm-cms/src/com/arsdigita/cms/ContentCenterAppManager.java index 1f7645f2c..6d9f56e1b 100644 --- a/ccm-cms/src/com/arsdigita/cms/ContentCenterAppManager.java +++ b/ccm-cms/src/com/arsdigita/cms/ContentCenterAppManager.java @@ -23,6 +23,7 @@ import com.arsdigita.bebop.Label; import com.arsdigita.bebop.SimpleContainer; import com.arsdigita.ui.admin.GlobalizationUtil; import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager; +import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer; /** * @@ -40,12 +41,15 @@ public class ContentCenterAppManager extends AbstractSingletonApplicationManager * * @return A panel with a message that there no settings yet. */ - public SimpleContainer getApplicationAdminForm() { + public ApplicationInstanceAwareContainer getApplicationAdminForm() { + final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer(); + final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL); - panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings"))); + + container.add(panel); - return panel; + return container; } } diff --git a/ccm-cms/src/com/arsdigita/cms/ServiceAppManager.java b/ccm-cms/src/com/arsdigita/cms/ServiceAppManager.java index 7ca2cb7d2..0a6469319 100644 --- a/ccm-cms/src/com/arsdigita/cms/ServiceAppManager.java +++ b/ccm-cms/src/com/arsdigita/cms/ServiceAppManager.java @@ -20,9 +20,9 @@ package com.arsdigita.cms; import com.arsdigita.bebop.BoxPanel; import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.SimpleContainer; import com.arsdigita.ui.admin.GlobalizationUtil; import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager; +import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer; /** * @@ -39,12 +39,15 @@ public class ServiceAppManager extends AbstractSingletonApplicationManager * * @return */ - public SimpleContainer getApplicationAdminForm() { + public ApplicationInstanceAwareContainer getApplicationAdminForm() { + final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer(); + final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL); - panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings"))); - return panel; + container.add(panel); + + return container; } } diff --git a/ccm-core/src/com/arsdigita/ui/admin/ApplicationsAdministrationTab.java b/ccm-core/src/com/arsdigita/ui/admin/ApplicationsAdministrationTab.java index 395a3f447..ea934d2ab 100644 --- a/ccm-core/src/com/arsdigita/ui/admin/ApplicationsAdministrationTab.java +++ b/ccm-core/src/com/arsdigita/ui/admin/ApplicationsAdministrationTab.java @@ -52,8 +52,7 @@ public class ApplicationsAdministrationTab extends BoxPanel implements AdminCons private final Tree applicationTree; private final Map appPanes = new HashMap(); - private final Map instancePanes = new HashMap(); - private SimpleContainer visiblePane; + private final Map instancePanes = new HashMap(); /** * Constructor diff --git a/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationInstanceAwareContainer.java b/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationInstanceAwareContainer.java new file mode 100644 index 000000000..248a526f7 --- /dev/null +++ b/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationInstanceAwareContainer.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2013 Jens Pelzetter + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.ui.admin.applications; + +import com.arsdigita.bebop.SimpleContainer; +import com.arsdigita.web.Application; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class ApplicationInstanceAwareContainer extends SimpleContainer { + + private Application appInstance; + + public Application getAppInstance() { + return appInstance; + } + + public void setAppInstance(final Application appInstance) { + this.appInstance = appInstance; + } + +} diff --git a/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationInstancePane.java b/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationInstancePane.java index 3db1592bd..5649c19d7 100644 --- a/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationInstancePane.java +++ b/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationInstancePane.java @@ -21,7 +21,6 @@ package com.arsdigita.ui.admin.applications; import com.arsdigita.bebop.Label; import com.arsdigita.bebop.PropertySheet; import com.arsdigita.bebop.SegmentedPanel; -import com.arsdigita.bebop.SimpleContainer; import com.arsdigita.ui.admin.GlobalizationUtil; import com.arsdigita.web.Application; @@ -35,7 +34,7 @@ import com.arsdigita.web.Application; */ public class ApplicationInstancePane extends SegmentedPanel { - public ApplicationInstancePane(final Application appInstance, final SimpleContainer appAdminPane) { + public ApplicationInstancePane(final Application appInstance, final ApplicationInstanceAwareContainer appAdminPane) { super(); @@ -53,6 +52,7 @@ public class ApplicationInstancePane extends SegmentedPanel { "ui.admin.MultiInstancePane.manage.no_instance_admin_pane_found", new String[]{appInstance.getApplicationType().getApplicationObjectType()}))); } else { + appAdminPane.setAppInstance(appInstance); addSegment(new Label(GlobalizationUtil.globalize( "ui.admin.applications.ApplicationInstancePane.manage.heading")), appAdminPane); diff --git a/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationManager.java b/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationManager.java index 6133b5a38..23911407b 100644 --- a/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationManager.java +++ b/ccm-core/src/com/arsdigita/ui/admin/applications/ApplicationManager.java @@ -19,7 +19,7 @@ package com.arsdigita.ui.admin.applications; import com.arsdigita.bebop.Form; -import com.arsdigita.bebop.SimpleContainer; +import com.arsdigita.ui.admin.ApplicationsAdministrationTab; import com.arsdigita.web.Application; import java.util.ServiceLoader; @@ -66,7 +66,7 @@ public interface ApplicationManager { * @return A container containing one or more forms for managing instances * of an application. */ - SimpleContainer getApplicationAdminForm(); + ApplicationInstanceAwareContainer getApplicationAdminForm(); /** * Provides a form for creating new instances of applications. For diff --git a/ccm-core/src/com/arsdigita/ui/login/LoginAppManager.java b/ccm-core/src/com/arsdigita/ui/login/LoginAppManager.java index 1edda3986..23a2605d5 100644 --- a/ccm-core/src/com/arsdigita/ui/login/LoginAppManager.java +++ b/ccm-core/src/com/arsdigita/ui/login/LoginAppManager.java @@ -23,6 +23,7 @@ import com.arsdigita.bebop.Label; import com.arsdigita.bebop.SimpleContainer; import com.arsdigita.ui.admin.GlobalizationUtil; import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager; +import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer; /** * @@ -40,12 +41,15 @@ public class LoginAppManager extends AbstractSingletonApplicationManager * * @return */ - public SimpleContainer getApplicationAdminForm() { + public ApplicationInstanceAwareContainer getApplicationAdminForm() { + final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer(); + final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL); - panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings"))); - return panel; + container.add(panel); + + return container; } } diff --git a/ccm-ldn-search/src/com/arsdigita/london/search/SearchAppManager.java b/ccm-ldn-search/src/com/arsdigita/london/search/SearchAppManager.java index b38303109..0740bd201 100644 --- a/ccm-ldn-search/src/com/arsdigita/london/search/SearchAppManager.java +++ b/ccm-ldn-search/src/com/arsdigita/london/search/SearchAppManager.java @@ -23,6 +23,7 @@ import com.arsdigita.bebop.Label; import com.arsdigita.bebop.SimpleContainer; import com.arsdigita.ui.admin.GlobalizationUtil; import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager; +import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer; /** * @@ -35,12 +36,15 @@ public class SearchAppManager extends AbstractSingletonApplicationManager + * @version $Id$ + */ +public class NavigationAppManager implements ApplicationManager { + + public Class getApplication() { + return Navigation.class; + } + + public ApplicationInstanceAwareContainer getApplicationAdminForm() { +// final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer(); +// final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL); +// container.add(panel); +// +// panel.add(new Label(NavigationGlobalizationUtil.globalize("ui.admin.instance_not_compatible_yet"))); +// +// return container; + return new ApplicationAdminForm(); + } + + public Form getApplicationCreateForm() { + return new NavigationCreateForm(); + } + + private class ApplicationAdminForm extends ApplicationInstanceAwareContainer { + + public ApplicationAdminForm() { + super(); + final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL); + add(panel); + + panel.add(new Label(NavigationGlobalizationUtil.globalize("ui.admin.instance_not_compatible_yet"))); + panel.add(new Link(new PrintListener() { + public void prepare(final PrintEvent event) { + final Link link = (Link) event.getTarget(); + + link.setTarget(String.format("%s/admin", getAppInstance().getPath())); + link.setChild(new Label(getAppInstance().getTitle())); + } + + })); + } + + } +} diff --git a/ccm-navigation/src/com/arsdigita/navigation/NavigationGlobalizationUtil.java b/ccm-navigation/src/com/arsdigita/navigation/NavigationGlobalizationUtil.java new file mode 100644 index 000000000..94a0aa851 --- /dev/null +++ b/ccm-navigation/src/com/arsdigita/navigation/NavigationGlobalizationUtil.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2013 Jens Pelzetter + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.navigation; + +import com.arsdigita.globalization.GlobalizedMessage; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class NavigationGlobalizationUtil { + + private static final String BUNDLE_NAME = "com.arsdigita.navigation.NavigationResources"; + + public static GlobalizedMessage globalize(final String key) { + return new GlobalizedMessage(key, BUNDLE_NAME); + } + + public static GlobalizedMessage globalize(final String key, final Object[] args) { + return new GlobalizedMessage(key, BUNDLE_NAME, args); + } + +} diff --git a/ccm-navigation/src/com/arsdigita/navigation/NavigationResources.properties b/ccm-navigation/src/com/arsdigita/navigation/NavigationResources.properties new file mode 100644 index 000000000..27318ba57 --- /dev/null +++ b/ccm-navigation/src/com/arsdigita/navigation/NavigationResources.properties @@ -0,0 +1,8 @@ +# To change this template, choose Tools | Templates +# and open the template in the editor. + +ui.create.nav_url=Navigation URL +ui.create.nav_title=Navigation Title +ui.create.nav_default_domain=Default Terms Domain +ui.create.nave_desc=Description +ui.admin.instance_not_compatible_yet=The administration for instances of navigation is not yet compatible with the applications tab. Please use the link below. diff --git a/ccm-navigation/src/com/arsdigita/navigation/NavigationResources_de.properties b/ccm-navigation/src/com/arsdigita/navigation/NavigationResources_de.properties new file mode 100644 index 000000000..9d6168fa1 --- /dev/null +++ b/ccm-navigation/src/com/arsdigita/navigation/NavigationResources_de.properties @@ -0,0 +1,8 @@ +# To change this template, choose Tools | Templates +# and open the template in the editor. + +ui.create.nav_url=Navigation URL +ui.create.nav_title=Navigation Titel +ui.create.nav_default_domain=Standard Terms Domain +ui.create.nave_desc=Beschreibung +ui.admin.instance_not_compatible_yet=Das Formular zum bearbeiten der instanzspezifischen Einstellungen von Navigation ist noch nicht mit dem Applications Tab kompatible. Bitte nutzen Sie den untenstehenden Link. diff --git a/ccm-navigation/src/com/arsdigita/navigation/tools/NavigationCreator.java b/ccm-navigation/src/com/arsdigita/navigation/tools/NavigationCreator.java index 8a39454bc..3aa6d4f6d 100755 --- a/ccm-navigation/src/com/arsdigita/navigation/tools/NavigationCreator.java +++ b/ccm-navigation/src/com/arsdigita/navigation/tools/NavigationCreator.java @@ -15,20 +15,13 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - package com.arsdigita.navigation.tools; -import com.arsdigita.domain.DomainObject; -import com.arsdigita.domain.DomainObjectFactory; -import com.arsdigita.domain.DomainObjectInstantiator; import com.arsdigita.kernel.Kernel; import com.arsdigita.kernel.KernelExcursion; -import com.arsdigita.london.terms.Domain; import com.arsdigita.util.cmd.Program; import com.arsdigita.london.util.Transaction; import com.arsdigita.navigation.Navigation; -import com.arsdigita.persistence.DataObject; -import com.arsdigita.web.Application; import org.apache.commons.cli.CommandLine; import org.apache.log4j.Logger; @@ -51,42 +44,6 @@ public class NavigationCreator extends Program { super("Add Navigation instance", "1.0.0", "URL-FRAGMENT TITLE DOMAIN-KEY"); } - /** - * - * @param navURL - * @param navTitle - * @param defaultDomain - */ - private void createNavigation(String navURL, - String navTitle, - String defaultDomain) { - - if (!Application.isInstalled(Navigation.BASE_DATA_OBJECT_TYPE, - "/"+navURL+"/")) { - - DomainObjectFactory.registerInstantiator( - Navigation.BASE_DATA_OBJECT_TYPE, new DomainObjectInstantiator() { - public DomainObject doNewInstance(DataObject dataObject) { - return new Navigation(dataObject); - } - }); - /* Create Instance beyond root (4. parameter null) */ - Application app = Application.createApplication( - Navigation.BASE_DATA_OBJECT_TYPE, navURL, navTitle, null); - app.save(); - Domain domain = Domain.retrieve(defaultDomain); - domain.setAsRootForObject(app, null); - - } else { - - System.err.println(Navigation.BASE_DATA_OBJECT_TYPE - + " already installed at " + navURL); - System.exit(1); - - } - - } - /** * * @param cmdLine @@ -103,9 +60,9 @@ public class NavigationCreator extends Program { String navTitle = args[1]; String domainKey = args[2]; if (navURL != null && navURL.length() != 0 - && navTitle != null && navTitle.length() != 0 - && domainKey != null && domainKey.length() != 0) { - createNavigation(navURL, navTitle, domainKey); + && navTitle != null && navTitle.length() != 0 + && domainKey != null && domainKey.length() != 0) { + Navigation.createNavigation(navURL, navTitle, domainKey, ""); } else { help(System.err); System.exit(1); @@ -115,11 +72,13 @@ public class NavigationCreator extends Program { System.exit(1); } } + }.run(); } + }.run(); } - + /** * @param args */ diff --git a/ccm-navigation/src/com/arsdigita/navigation/ui/admin/CategoryTree.java b/ccm-navigation/src/com/arsdigita/navigation/ui/admin/CategoryTree.java index ad3c561ae..68a1c7760 100755 --- a/ccm-navigation/src/com/arsdigita/navigation/ui/admin/CategoryTree.java +++ b/ccm-navigation/src/com/arsdigita/navigation/ui/admin/CategoryTree.java @@ -15,7 +15,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - package com.arsdigita.navigation.ui.admin; import com.arsdigita.bebop.Tree; @@ -30,7 +29,6 @@ import com.arsdigita.util.LockableImpl; import com.arsdigita.navigation.Navigation; - /** * Lists category tree. * @@ -51,18 +49,19 @@ public class CategoryTree extends Tree { * A TreeModelBuilder that loads the tree from the current category */ private static class SectionTreeModelBuilder extends LockableImpl - implements TreeModelBuilder { + implements TreeModelBuilder { public SectionTreeModelBuilder() { super(); } public TreeModel makeModel(Tree t, PageState s) { - Navigation app = (Navigation)Web.getContext().getApplication(); + Navigation app = (Navigation) Web.getContext().getApplication(); TemplateContext ctx = Navigation.getContext().getTemplateContext(); String dispatcherContext = ctx == null ? null : ctx.getContext(); Category root = Category.getRootForObject(app, dispatcherContext); return new CategoryTreeModelLite(root); } + } } diff --git a/ccm-navigation/src/com/arsdigita/navigation/ui/admin/NavigationCreateForm.java b/ccm-navigation/src/com/arsdigita/navigation/ui/admin/NavigationCreateForm.java new file mode 100644 index 000000000..3144dcb0b --- /dev/null +++ b/ccm-navigation/src/com/arsdigita/navigation/ui/admin/NavigationCreateForm.java @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2013 Jens Pelzetter + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.navigation.ui.admin; + +import com.arsdigita.bebop.ColumnPanel; +import com.arsdigita.bebop.Form; +import com.arsdigita.bebop.FormData; +import com.arsdigita.bebop.FormProcessException; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.SaveCancelSection; +import com.arsdigita.bebop.event.FormProcessListener; +import com.arsdigita.bebop.event.FormSectionEvent; +import com.arsdigita.bebop.event.FormSubmissionListener; +import com.arsdigita.bebop.event.PrintEvent; +import com.arsdigita.bebop.event.PrintListener; +import com.arsdigita.bebop.form.Option; +import com.arsdigita.bebop.form.SingleSelect; +import com.arsdigita.bebop.form.TextArea; +import com.arsdigita.bebop.form.TextField; +import com.arsdigita.london.terms.Domain; +import com.arsdigita.navigation.Navigation; +import com.arsdigita.navigation.NavigationAppManager; +import com.arsdigita.navigation.NavigationGlobalizationUtil; +import com.arsdigita.navigation.tools.NavigationCreator; +import com.arsdigita.persistence.DataCollection; +import com.arsdigita.persistence.SessionManager; +import com.arsdigita.util.UncheckedWrapperException; +import java.util.TooManyListenersException; + +/** + * This form is used by the {@link NavigationAppManager} for creating a new navigation instance. The part which is + * creating the instance ({@link ProcessListener#process(com.arsdigita.bebop.event.FormSectionEvent)} is taken from + * the {@link NavigationCreator} CLI application. + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class NavigationCreateForm extends Form { + + public static final String FORM_NAME = "NavigationCreateForm"; + private static final String NAV_URL = "navUrl"; + private static final String NAV_TITLE = "navTitle"; + private static final String NAV_DOMAIN = "navDomain"; + private static final String NAV_DESC = "navDesc"; + private final SaveCancelSection saveCancelSection; + + public NavigationCreateForm() { + super(FORM_NAME, new ColumnPanel(2)); + + add(new Label(NavigationGlobalizationUtil.globalize("ui.create.nav_url"))); + add(new TextField(NAV_URL)); + + add(new Label(NavigationGlobalizationUtil.globalize("ui.create.nav_title"))); + add(new TextField(NAV_TITLE)); + + add(new Label(NavigationGlobalizationUtil.globalize("ui.create.nav_default_domain"))); + final SingleSelect termDomainSelect = new SingleSelect(NAV_DOMAIN); + try { + termDomainSelect.addPrintListener(new PrintListener() { + public void prepare(final PrintEvent event) { + final SingleSelect target = (SingleSelect) event.getTarget(); + + final DataCollection termDomains = SessionManager.getSession(). + retrieve(Domain.BASE_DATA_OBJECT_TYPE); + while (termDomains.next()) { + target.addOption(new Option((String) termDomains.getDataObject().get(Domain.KEY), + (String) termDomains.getDataObject().get(Domain.TITLE))); + } + } + + }); + } catch (TooManyListenersException ex) { + throw new UncheckedWrapperException(ex); + } + add(termDomainSelect); + + add(new Label(NavigationGlobalizationUtil.globalize("ui.create.nave_desc"))); + add(new TextArea(NAV_DESC, 10, 60, TextArea.OFF)); + + saveCancelSection = new SaveCancelSection(); + add(saveCancelSection, ColumnPanel.FULL_WIDTH | ColumnPanel.LEFT); + + addSubmissionListener(new SubmissionListener()); + addProcessListener(new ProcessListener()); + } + + private class SubmissionListener implements FormSubmissionListener { + + public SubmissionListener() { + //Nothing + } + + public void submitted(final FormSectionEvent event) throws FormProcessException { + final PageState state = event.getPageState(); + final FormData data = event.getFormData(); + + if (saveCancelSection.getCancelButton().isSelected(state)) { + data.put(NAV_URL, ""); + data.put(NAV_TITLE, ""); + data.put(NAV_DOMAIN, ""); + data.put(NAV_DESC, ""); + + throw new FormProcessException("Canceled"); + } + } + + } + + private class ProcessListener implements FormProcessListener { + + public ProcessListener() { + //Nothing + } + + public void process(final FormSectionEvent event) throws FormProcessException { + final PageState state = event.getPageState(); + final FormData data = event.getFormData(); + + if (saveCancelSection.getSaveButton().isSelected(state)) { + + Navigation.createNavigation(data.getString(NAV_URL), + data.getString(NAV_TITLE), + data.getString(NAV_DOMAIN), + data.getString(NAV_DESC)); + + data.put(NAV_URL, ""); + data.put(NAV_TITLE, ""); + data.put(NAV_DOMAIN, ""); + data.put(NAV_DESC, ""); + } + } + + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/SciPublicationsAppManager.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/SciPublicationsAppManager.java index fb7044c19..f396e7723 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/SciPublicationsAppManager.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/SciPublicationsAppManager.java @@ -20,9 +20,9 @@ package com.arsdigita.cms.scipublications; import com.arsdigita.bebop.BoxPanel; import com.arsdigita.bebop.Label; -import com.arsdigita.bebop.SimpleContainer; import com.arsdigita.ui.admin.GlobalizationUtil; import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager; +import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer; /** * @@ -30,21 +30,24 @@ import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager; * @version $Id$ */ public class SciPublicationsAppManager extends AbstractSingletonApplicationManager { - + public Class getApplication() { return SciPublications.class; } - + /** * * @return Just a simple Message for now because this applications has no settings yet. */ - public SimpleContainer getApplicationAdminForm() { - final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL); - + public ApplicationInstanceAwareContainer getApplicationAdminForm() { + final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer(); + + final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL); panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings"))); - - return panel; + + container.add(panel); + + return container; } - + } diff --git a/ccm-shortcuts/src/com/arsdigita/shortcuts/ShortcutsAppManager.java b/ccm-shortcuts/src/com/arsdigita/shortcuts/ShortcutsAppManager.java index 2bd581cc9..ece1529ea 100644 --- a/ccm-shortcuts/src/com/arsdigita/shortcuts/ShortcutsAppManager.java +++ b/ccm-shortcuts/src/com/arsdigita/shortcuts/ShortcutsAppManager.java @@ -21,6 +21,7 @@ package com.arsdigita.shortcuts; import com.arsdigita.bebop.SimpleContainer; import com.arsdigita.shortcuts.ui.AdminPanel; import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager; +import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer; /** * @@ -33,8 +34,11 @@ public class ShortcutsAppManager extends AbstractSingletonApplicationManager