You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by mc...@apache.org on 2010/04/27 20:20:24 UTC
svn commit: r938593 [4/8] - in /geronimo/devtools/eclipse-plugin/trunk:
plugins/org.apache.geronimo.st.ui/ plugins/org.apache.geronimo.st.v21.ui/
plugins/org.apache.geronimo.st.v21.ui/src/main/java/org/apache/geronimo/st/v21/ui/sections/
plugins/org.ap...
Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityAdvancedSection.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityAdvancedSection.java?rev=938593&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityAdvancedSection.java (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityAdvancedSection.java Tue Apr 27 18:20:22 2010
@@ -0,0 +1,526 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.st.v30.ui.sections;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.bind.JAXBElement;
+
+import org.apache.geronimo.jee.deployment.Pattern;
+import org.apache.geronimo.jee.security.Role;
+import org.apache.geronimo.jee.security.RoleMappings;
+import org.apache.geronimo.jee.security.Security;
+import org.apache.geronimo.jee.security.SubjectInfo;
+import org.apache.geronimo.st.ui.CommonMessages;
+import org.apache.geronimo.st.ui.sections.AbstractTableSection;
+import org.apache.geronimo.st.v30.core.GeronimoServerInfo;
+import org.apache.geronimo.st.v30.core.jaxb.JAXBModelUtils;
+import org.apache.geronimo.st.v30.ui.wizards.SecurityRunAsSubjectWizard;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
+import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class SecurityAdvancedSection extends AbstractTableSection {
+
+ //private static final String SPECIFY_CREDENTIAL_STORE_MANUALLY = "<specify manually>";
+
+ protected Combo credentialStoreRef;
+// protected Button specifyCredentialStoreRefButton;
+// protected Button deleteCredentialStoreRefButton;
+
+ private Hashtable<String, Pattern> credentialStoreList = new Hashtable<String, Pattern>();
+
+ protected Combo defaultSubjectRealmName;
+
+ protected Combo defaultSubjectId;
+
+ protected Button doAsCurrentCaller;
+
+ protected Button useContextHandler;
+
+ private HashMap<Pattern,HashMap<String,ArrayList<String>>> credentialStoreAttributes;
+
+ public SecurityAdvancedSection(JAXBElement plan, Composite parent, FormToolkit toolkit, int style) {
+ super(plan, parent, toolkit, style);
+ createClient();
+ }
+
+ public void createClient() {
+ Section section = getSection();
+ section.setText(getTitle());
+ section.setDescription(getDescription());
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
+ Composite clientComposite = createComposite(getSection(), 3);
+ section.setClient(clientComposite);
+
+ Composite composite1 = createComposite(clientComposite, 2);
+ composite1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
+
+ doAsCurrentCaller = toolkit.createButton(composite1, CommonMessages.securityDoasCurrentCaller,
+ SWT.CHECK);
+ doAsCurrentCaller.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
+ doAsCurrentCaller.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ setDoAsCurrentCaller();
+ markDirty();
+ }
+ });
+ doAsCurrentCaller.setSelection(isDoasCurrentCaller());
+
+ useContextHandler = toolkit.createButton(composite1, CommonMessages.securityUseContextHandler,
+ SWT.CHECK);
+ useContextHandler.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
+ useContextHandler.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ setUseContextHandler();
+ markDirty();
+ }
+ });
+ useContextHandler.setSelection(isUseContextHandler());
+
+ createLabel(clientComposite, CommonMessages.securityCredentialStore);
+ credentialStoreRef = new Combo(clientComposite, SWT.READ_ONLY| SWT.BORDER);
+ // credentialStoreRef.setText("<credential store ref name will go here>");
+ GridData gridData = new GridData(SWT.FILL, SWT.CENTER, false, false);
+ gridData.widthHint = 300;
+ credentialStoreRef.setLayoutData(gridData);
+ populateCredentialStores();
+ credentialStoreRef.addSelectionListener(new SelectionAdapter(){
+
+ public void widgetSelected(SelectionEvent arg0) {
+ setCredentialStoreRef();
+ populateDefaultSubjectRealmName();
+ populateDefaultSubjectId();
+ toggleAdvancedSettings();
+ markDirty();
+ }
+
+ });
+
+ Composite composite2 = toolkit.createComposite(clientComposite);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ layout.marginHeight = 5;
+ layout.marginWidth = 0;
+ layout.verticalSpacing = 5;
+ layout.horizontalSpacing = 5;
+ composite2.setLayout(layout);
+ composite2.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
+ /* specifyCredentialStoreRefButton = toolkit.createButton(composite2, CommonMessages.edit, SWT.NONE);
+ specifyCredentialStoreRefButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
+ specifyCredentialStoreRefButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Wizard wizard = getCredentialStoreRefWizard();
+ WizardDialog dialog = new WizardDialog(Display.getCurrent().getActiveShell(), wizard);
+ dialog.open();
+ if (dialog.getReturnCode() == Dialog.OK) {
+ setCredentialStoreRef();
+ toggleAdvancedSettings();
+ markDirty();
+ }
+ }
+ });
+ deleteCredentialStoreRefButton = toolkit.createButton(composite2, CommonMessages.remove, SWT.NONE);
+ deleteCredentialStoreRefButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
+ deleteCredentialStoreRefButton.addSelectionListener(new SelectionAdapter(){
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ }
+ });*/
+
+ createLabel(clientComposite, CommonMessages.securityDefaultSubject);
+ createLabel(clientComposite, "");
+ createLabel(clientComposite, "");
+ //group = createGroup(clientComposite, CommonMessages.securityDefaultSubject);
+
+ //createLabel(clientComposite, "");
+ //Composite composite3 = createComposite(clientComposite, 2);
+ //composite3.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
+ createLabel(clientComposite, CommonMessages.securityDefaultSubjectRealmName).setLayoutData(
+ new GridData(SWT.RIGHT, SWT.CENTER, false, false));
+ defaultSubjectRealmName = new Combo(clientComposite, SWT.SINGLE | SWT.DROP_DOWN |SWT.READ_ONLY);
+ populateDefaultSubjectRealmName();
+ gridData = new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1);
+ gridData.widthHint = 100;
+ defaultSubjectRealmName.setLayoutData(gridData);
+ defaultSubjectRealmName.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent arg0) {
+ populateDefaultSubjectId();
+ markDirty();
+ }
+ });
+ defaultSubjectRealmName.pack();
+
+ //createLabel(clientComposite, "");
+ //Composite composite4 = createComposite(clientComposite, 2);
+ //composite4.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
+ createLabel(clientComposite, CommonMessages.securityDefaultSubjectId).setLayoutData(
+ new GridData(SWT.RIGHT, SWT.CENTER, false, false));
+ defaultSubjectId = new Combo(clientComposite, SWT.SINGLE | SWT.DROP_DOWN |SWT.READ_ONLY);
+ defaultSubjectId.add(getDefaultSubjectId());
+ gridData = new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1);
+ gridData.widthHint = 100;
+ defaultSubjectId.setLayoutData(gridData);
+ populateDefaultSubjectId();
+ defaultSubjectId.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent arg0) {
+ setDefaultSubject();
+ markDirty();
+ }
+ });
+ defaultSubjectId.pack();
+
+ //group = createGroup(clientComposite, CommonMessages.securityRunAsSubjects);
+ createLabel(clientComposite, "").setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 3, 1));
+ createLabel(clientComposite, CommonMessages.securityRunAsSubjects).setLayoutData(
+ new GridData(SWT.LEFT, SWT.TOP, false, false));
+ createViewer(clientComposite);
+ viewer.setContentProvider(getContentProvider());
+ viewer.setLabelProvider(getLabelProvider());
+ viewer.setInput(getInput());
+
+ Composite buttonComposite = createButtonComposite(clientComposite);
+ createAddButton(buttonComposite);
+ createRemoveButton(buttonComposite);
+ createEditButton(buttonComposite);
+ activateButtons();
+
+ section.setExpanded(false);
+ toggleAdvancedSettings();
+ }
+
+ private void populateDefaultSubjectRealmName() {
+ defaultSubjectRealmName.removeAll();
+
+ String realmName = getDefaultSubjectRealmName();
+
+ defaultSubjectRealmName.add(realmName);
+ if (realmName.length() > 0) {
+ defaultSubjectRealmName.add("");
+ }
+
+ String credentialStoreName = credentialStoreRef.getText();
+ if (credentialStoreName!=null && credentialStoreName.length()!=0) {
+ Map<String,ArrayList<String>> realmNameMap = credentialStoreAttributes.get(credentialStoreList.get(credentialStoreName));
+ if (realmNameMap!=null) {
+ Set<String> nameSet = realmNameMap.keySet();
+ for (String name: nameSet){
+ if (!name.equals(realmName))
+ defaultSubjectRealmName.add(name);
+ }
+ }
+ }
+ defaultSubjectRealmName.select(0);
+ }
+
+ private void populateDefaultSubjectId() {
+ defaultSubjectId.removeAll();
+
+ String subjectId = getDefaultSubjectId();
+ defaultSubjectId.add(subjectId);
+ if (subjectId.length() > 0) {
+ defaultSubjectId.add("");
+ }
+
+ String credentialStoreName = credentialStoreRef.getText();
+ String defaultRealmName = defaultSubjectRealmName.getText();
+ if (credentialStoreName!=null && credentialStoreName.length()!=0 && defaultRealmName!=null && defaultRealmName.length()!=0) {
+ Map<String,ArrayList<String>> realmNameMap = credentialStoreAttributes.get(credentialStoreList.get(credentialStoreName));
+ if (realmNameMap!=null) {
+ ArrayList<String> ids = realmNameMap.get(defaultRealmName);
+ for (String id: ids){
+ if (!id.equals(subjectId))
+ defaultSubjectId.add(id);
+ }
+ }
+ }
+ defaultSubjectId.select(0);
+ }
+
+/* private Wizard getCredentialStoreRefWizard() {
+ return null;
+ }*/
+
+ private void toggleAdvancedSettings() {
+ boolean enable = false;
+
+ if (getSecurity() != null && getSecurity().getCredentialStoreRef() != null
+ && (defaultSubjectRealmName.getItemCount() > 0 || defaultSubjectId.getItemCount() >0)) {
+ enable = true;
+ }
+
+ defaultSubjectRealmName.setEnabled(enable);
+ defaultSubjectId.setEnabled(enable);
+ table.setEnabled(enable);
+ activateAddButton();
+ }
+
+ @Override
+ public Object getInput() {
+ return SecurityRoleMappingSection.getRoleMappings(getPlan(), false);
+ }
+
+ @Override
+ public IContentProvider getContentProvider() {
+ return new ContentProvider() {
+ @Override
+ public Object[] getElements(Object inputElement) {
+ if (inputElement instanceof RoleMappings) {
+ return ((RoleMappings) inputElement).getRole().toArray();
+ }
+ return super.getElements(inputElement);
+ }
+ };
+ }
+
+ @Override
+ protected boolean filter(Viewer viewer, Object parentElement, Object element) {
+ if (element instanceof Role) {
+ return ((Role) element).getRunAsSubject() != null;
+ }
+ return false;
+ }
+
+ @Override
+ public IBaseLabelProvider getLabelProvider() {
+ return new LabelProvider() {
+ @Override
+ public String getColumnText(Object element, int columnIndex) {
+ if (element instanceof Role) {
+ Role role = (Role) element;
+ switch (columnIndex) {
+ case 0:
+ return role.getRoleName();
+ case 1:
+ return role.getRunAsSubject().getRealm();
+ case 2:
+ return role.getRunAsSubject().getId();
+ }
+ }
+ return "";
+ }
+ };
+ }
+
+ @Override
+ protected void removeItem(Object selectedItem) {
+ if (selectedItem instanceof Role) {
+ ((Role) selectedItem).setRunAsSubject(null);
+ return;
+ }
+ super.removeItem(selectedItem);
+ }
+
+ @Override
+ protected Wizard getWizard() {
+ return new SecurityRunAsSubjectWizard(this);
+ }
+
+ @Override
+ public void activateAddButton() {
+ if (getSecurity() != null && getSecurity().getCredentialStoreRef() != null
+ && getRolesWithoutRunAsSubject().length > 0) {
+ addButton.setEnabled(true);
+ } else {
+ addButton.setEnabled(false);
+ }
+ }
+
+ public Role getRole(String roleName) {
+ List<Role> roles = SecurityRoleMappingSection.getRoles(getPlan(), false);
+ for (int i = 0; i < roles.size(); i++) {
+ Role role = roles.get(i);
+ if (role.getRoleName().equals(roleName)) {
+ return role;
+ }
+ }
+ return null;
+ }
+
+ public String[] getRolesWithoutRunAsSubject() {
+ List<Role> roles = SecurityRoleMappingSection.getRoles(getPlan(), false);
+ List<Role> rolesWithoutRunAsSubject = new ArrayList<Role>();
+ for (int i = 0; i < roles.size(); i++) {
+ Role role = roles.get(i);
+ if(role.getRunAsSubject() == null) {
+ rolesWithoutRunAsSubject.add(role);
+ }
+ }
+ String[] roleNames = new String[rolesWithoutRunAsSubject.size()];
+ for (int i = 0; i < rolesWithoutRunAsSubject.size(); i++) {
+ roleNames[i] = rolesWithoutRunAsSubject.get(i).getRoleName();
+ }
+ return roleNames;
+ }
+
+ private void populateCredentialStores() {
+ String credentialStoreRefName = getCredentialStoreRefName();
+ credentialStoreRef.add(credentialStoreRefName);
+ if (credentialStoreRefName.length() > 0) {
+ credentialStoreRef.add(""); //users will select this empty string to unset credentialStoreRef
+ }
+
+ List<Pattern> deployedCredentialStores = GeronimoServerInfo.getInstance().getDeployedCredentialStores();
+ Pattern pattern = new Pattern();
+ pattern.setCustomFoo(credentialStoreRefName);
+ if (deployedCredentialStores.contains(pattern)) {
+ deployedCredentialStores.remove(pattern);
+ }
+ for (int i = 0; i < deployedCredentialStores.size(); i++) {
+ String credentialStoreName = deployedCredentialStores.get(i).toString();
+ //in case that module is null, replace the ending string of pattern.toString() with type
+ credentialStoreName = credentialStoreName.substring(0, credentialStoreName.lastIndexOf("/")+1).concat(deployedCredentialStores.get(i).getType()+")");
+ credentialStoreRef.add(credentialStoreName);
+ credentialStoreList.put(credentialStoreName, deployedCredentialStores.get(i));
+ }
+ credentialStoreAttributes = GeronimoServerInfo.getInstance().getDeployedCredentialStoreAttributes();
+ credentialStoreRef.select(0);
+ }
+
+ @Override
+ public List getObjectContainer() {
+ return getSecurity().getRoleMappings().getRole();
+ }
+
+ @Override
+ public Class getTableEntryObjectType() {
+ return Role.class;
+ }
+
+ @Override
+ public String[] getTableColumnNames() {
+ return new String[] { CommonMessages.securityRunAsSubjectRole, CommonMessages.securityRunAsSubjectRealm,
+ CommonMessages.securityRunAsSubjectId };
+ }
+
+ @Override
+ public String getTitle() {
+ return CommonMessages.editorSectionSecurityAdvancedTitle;
+ }
+
+ @Override
+ public String getDescription() {
+ return CommonMessages.editorSectionSecurityAdvancedDescription;
+ }
+
+ private Security getSecurity() {
+ return JAXBModelUtils.getSecurity(getPlan());
+ }
+
+ private String getCredentialStoreRefName() {
+ if (getSecurity() != null) {
+ Pattern credentialStoreRef = getSecurity().getCredentialStoreRef();
+ if (credentialStoreRef != null) {
+ return credentialStoreRef.getCustomFoo();
+ }
+ }
+ return "";
+ }
+
+ private String getDefaultSubjectRealmName() {
+ if (getSecurity() != null) {
+ SubjectInfo subjectInfo = getSecurity().getDefaultSubject();
+ if (subjectInfo != null) {
+ return subjectInfo.getRealm();
+ }
+ }
+ return "";
+ }
+
+ private String getDefaultSubjectId() {
+ if (getSecurity() != null) {
+ SubjectInfo subjectInfo = getSecurity().getDefaultSubject();
+ if (subjectInfo != null) {
+ return subjectInfo.getId();
+ }
+ }
+ return "";
+ }
+
+ private boolean isDoasCurrentCaller() {
+ if (getSecurity() != null) {
+ return getSecurity().isDoasCurrentCaller();
+ }
+ return false;
+ }
+
+ private boolean isUseContextHandler() {
+ if (getSecurity() != null) {
+ return getSecurity().isUseContextHandler();
+ }
+ return false;
+ }
+
+ private void setCredentialStoreRef() {
+ if (getSecurity() != null) {
+ String credentialStoreRefName = credentialStoreRef.getText();
+ if (credentialStoreRefName.trim().length() > 0) {
+ Pattern credentialStoreRef = credentialStoreList.get(credentialStoreRefName);
+ getSecurity().setCredentialStoreRef(credentialStoreRef);
+ } else {
+ getSecurity().setCredentialStoreRef(null);
+ }
+ }
+ }
+
+ private void setDefaultSubject() {
+ if (getSecurity() != null) {
+ String realmName = defaultSubjectRealmName.getText();
+ String realmId = defaultSubjectId.getText();
+ if (realmName.trim().length() > 0 && realmId.trim().length() > 0) {
+ SubjectInfo defaultSubject = new SubjectInfo();
+ defaultSubject.setRealm(realmName);
+ defaultSubject.setId(realmId);
+ getSecurity().setDefaultSubject(defaultSubject);
+ } else {
+ getSecurity().setDefaultSubject(null);
+ }
+ }
+ }
+
+ private void setDoAsCurrentCaller() {
+ if (getSecurity() != null) {
+ getSecurity().setDoasCurrentCaller(doAsCurrentCaller.getSelection());
+ }
+ }
+
+ private void setUseContextHandler() {
+ if (getSecurity() != null) {
+ getSecurity().setUseContextHandler(useContextHandler.getSelection());
+ }
+ }
+}
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityAdvancedSection.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityAdvancedSection.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityAdvancedSection.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityRealmSection.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityRealmSection.java?rev=938593&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityRealmSection.java (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityRealmSection.java Tue Apr 27 18:20:22 2010
@@ -0,0 +1,196 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.st.v30.ui.sections;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.bind.JAXBElement;
+
+import org.apache.geronimo.jee.deployment.Attribute;
+import org.apache.geronimo.jee.deployment.Gbean;
+import org.apache.geronimo.jee.deployment.XmlAttributeType;
+import org.apache.geronimo.jee.loginconfig.LoginConfig;
+import org.apache.geronimo.jee.loginconfig.LoginModule;
+import org.apache.geronimo.st.ui.sections.AbstractTableSection;
+import org.apache.geronimo.st.v30.ui.pages.SecurityPage;
+import org.apache.geronimo.st.v30.ui.wizards.SecurityRealmWizard;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.IFormPart;
+import org.eclipse.ui.forms.editor.FormEditor;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class SecurityRealmSection extends AbstractTableSection {
+ public SecurityRealmSection(JAXBElement plan, List gbeans,
+ Composite parent, FormToolkit toolkit, int style) {
+ super(plan, parent, toolkit, style);
+ this.objectContainer = gbeans;
+ COLUMN_NAMES = new String[] { "Security Realm Name",
+ "Login Module Class" };// TODO put into message
+ createClient();
+ }
+
+ @Override
+ public String getDescription() {
+ return "The following security realms are defined:";// TODO put into
+ // message
+ }
+
+ @Override
+ public Class getTableEntryObjectType() {
+ return JAXBElement.class;
+ }
+
+ @Override
+ public String getTitle() {
+ return "Security Realm";// TODO put into message
+ }
+
+ @Override
+ protected Wizard getWizard() {
+ return new SecurityRealmWizard(this);
+ }
+
+ protected void notifyOthers() {
+ notifyGBeanSectionToRefresh();
+ }
+
+ /*
+ * After add, remove, edit realm gbean, notify the gbean section to refresh.
+ * If the deploymentpage has not been initialized, catch a
+ * NullPointerException and just ignore it.
+ */
+ private void notifyGBeanSectionToRefresh() {
+ try {
+ SecurityPage securityPage = (SecurityPage) this.getManagedForm()
+ .getContainer();
+ FormEditor editor = securityPage.getEditor();
+ IFormPart[] parts = editor.findPage("deploymentpage")
+ .getManagedForm().getParts();
+ GBeanSection gbeanSection = null;
+ for (IFormPart part : parts) {
+ if (GBeanSection.class.isInstance(part)) {
+ gbeanSection = (GBeanSection) part;
+ }
+ }
+ gbeanSection.getViewer().refresh();
+ } catch (NullPointerException e) {
+ // Ignore, this exception happens when the deployment page hasn't
+ // been initialized
+ }
+ }
+
+ @Override
+ public ITreeContentProvider getContentProvider() {
+ return new ContentProvider() {
+ @Override
+ public Object[] getElements(Object inputElement) {
+ List<JAXBElement<?>> result = new ArrayList<JAXBElement<?>>();
+ List<?> list = getObjectContainer();
+ for (Iterator<?> it = list.iterator(); it.hasNext();) {
+ JAXBElement<?> current = (JAXBElement<?>) it.next();
+ if (isSecurityRealmGbean((Gbean) current.getValue())) {
+ result.add(current);
+ }
+ }
+ return result.toArray();
+ }
+ };
+ }
+
+ private boolean isSecurityRealmGbean(Gbean gbean) {
+ return "org.apache.geronimo.security.realm.GenericSecurityRealm"
+ .equals(gbean.getClazz());
+ }
+
+ @Override
+ public ITableLabelProvider getLabelProvider() {
+ return new LabelProvider() {
+ @Override
+ public String getColumnText(Object element, int columnIndex) {
+ // System.out.println("here");
+ if (JAXBElement.class.isInstance(element)) {
+ Object value = ((JAXBElement<?>) element).getValue();
+ if (Gbean.class.isInstance(value)) {
+ Gbean gbean = (Gbean) value;
+ switch (columnIndex) {
+ case 0:// security realm name
+ if (getGbeanAttributeValue(gbean, "realmName") != null) {
+ return getGbeanAttributeValue(gbean,
+ "realmName");
+ }
+ return "";
+ case 1:// login module class
+ if (getSecurityRealmGbeanLoginModuleClass(gbean) != null) {
+ return getSecurityRealmGbeanLoginModuleClass(gbean);
+ }
+ return "";
+ }
+ }
+ }
+ return null;
+ }
+ };
+ }
+
+ private String getGbeanAttributeValue(Gbean gbean, String attributeName) {
+ try {
+ List<JAXBElement<?>> elelist = gbean
+ .getAttributeOrXmlAttributeOrReference();
+ for (JAXBElement<?> ele : elelist) {
+ if (Attribute.class.isInstance(ele.getValue())
+ && ((Attribute) ele.getValue()).getName().equals(
+ attributeName)) {
+ return ((Attribute) ele.getValue()).getValue();
+ }
+ }
+ } catch (NullPointerException e) {
+ // ignore
+ }
+ return null;
+ }
+
+ private String getSecurityRealmGbeanLoginModuleClass(Gbean gbean) {
+ if (isSecurityRealmGbean(gbean)) {
+ try {
+ List<JAXBElement<?>> elelist = gbean
+ .getAttributeOrXmlAttributeOrReference();
+ for (JAXBElement<?> ele : elelist) {
+ if (XmlAttributeType.class.isInstance(ele.getValue())
+ && ((XmlAttributeType) ele.getValue()).getName()
+ .equals("LoginModuleConfiguration")) {
+ LoginModule loginModule = (LoginModule) ((LoginConfig) ((XmlAttributeType) ele
+ .getValue()).getAny())
+ .getLoginModuleRefOrLoginModule().get(0);
+ return loginModule.getLoginModuleClass();
+ }
+ }
+ return null;
+ } catch (NullPointerException e) {
+ // ignore
+ }
+ }
+ return null;
+ }
+}
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityRealmSection.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityRealmSection.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityRealmSection.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityRoleMappingSection.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityRoleMappingSection.java?rev=938593&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityRoleMappingSection.java (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityRoleMappingSection.java Tue Apr 27 18:20:22 2010
@@ -0,0 +1,294 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.st.v30.ui.sections;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.JAXBElement;
+
+import org.apache.geronimo.jee.security.DistinguishedName;
+import org.apache.geronimo.jee.security.LoginDomainPrincipal;
+import org.apache.geronimo.jee.security.Principal;
+import org.apache.geronimo.jee.security.RealmPrincipal;
+import org.apache.geronimo.jee.security.Role;
+import org.apache.geronimo.jee.security.RoleMappings;
+import org.apache.geronimo.jee.security.Security;
+import org.apache.geronimo.st.core.descriptor.AbstractDeploymentDescriptor;
+import org.apache.geronimo.st.core.descriptor.ApplicationDeploymentDescriptor;
+import org.apache.geronimo.st.core.descriptor.EjbDeploymentDescriptor;
+import org.apache.geronimo.st.core.descriptor.WebDeploymentDescriptor;
+import org.apache.geronimo.st.core.jaxb.JAXBUtils;
+import org.apache.geronimo.st.ui.CommonMessages;
+import org.apache.geronimo.st.ui.sections.AbstractTreeSection;
+import org.apache.geronimo.st.v30.core.jaxb.JAXBModelUtils;
+import org.apache.geronimo.st.v30.ui.Activator;
+import org.apache.geronimo.st.v30.ui.wizards.SecurityRoleMappingWizard;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class SecurityRoleMappingSection extends AbstractTreeSection {
+
+ public SecurityRoleMappingSection(JAXBElement plan, Composite parent, FormToolkit toolkit, int style) {
+ super(plan, parent, toolkit, style);
+ createClient();
+ }
+
+ public SecurityRoleMappingSection(JAXBElement plan, AbstractDeploymentDescriptor descriptor, Composite parent,
+ FormToolkit toolkit, int style) {
+ super(plan, descriptor, parent, toolkit, style);
+ createClient();
+ }
+
+ @Override
+ protected boolean isRequiredSyncToolbarAction() {
+ return true;
+ }
+
+ @Override
+ protected IAction getSyncAction() {
+ return new SyncAction(CommonMessages.securityRefreshRoles) {
+ @Override
+ public void run() {
+ if( addRolesFromDeploymentDescriptor() ) {
+ markDirty();
+ }
+ }
+ };
+ }
+
+ @Override
+ protected void activateRemoveButton() {
+ if (tree.getSelectionCount() > 0 && tree.getSelection()[0].getParentItem() != null) {
+ removeButton.setEnabled(true);
+ } else {
+ removeButton.setEnabled(false);
+ }
+ }
+
+ @Override
+ protected void activateEditButton() {
+ if (tree.getSelectionCount() > 0 && tree.getSelection()[0].getParentItem() != null) {
+ editButton.setEnabled(true);
+ } else {
+ editButton.setEnabled(false);
+ }
+ }
+
+ @Override
+ protected void activateAddButton() {
+ if (tree.getSelectionCount() > 0 && tree.getSelection()[0].getParentItem() == null) {
+ addButton.setEnabled(true);
+ } else {
+ addButton.setEnabled(false);
+ }
+ }
+
+ @Override
+ public void handleDelete() {
+ TreeItem selectedItem = tree.getSelection()[0];
+ Object selectedObject = selectedItem.getData();
+ Role role = (Role) selectedItem.getParentItem().getData();
+ try {
+ ((ArrayList) JAXBUtils.getValue(role, selectedObject.getClass().getSimpleName())).remove(selectedObject);
+ } catch (Exception e) {
+ MessageDialog.openError(Display.getCurrent().getActiveShell(),"Error", e.getMessage());
+ }
+ }
+
+ public Role getSelectedObject() {
+ return (Role) tree.getSelection()[0].getData();
+ }
+
+ @Override
+ public String getTitle() {
+ return CommonMessages.editorSectionSecurityRolesTitle;
+ }
+
+ @Override
+ public String getDescription() {
+ return CommonMessages.editorSectionSecurityRolesDescription;
+ }
+
+ @Override
+ public Wizard getWizard() {
+ return new SecurityRoleMappingWizard(this);
+ }
+
+ @Override
+ public Class getTableEntryObjectType() {
+ return Role.class;
+ }
+
+ @Override
+ public List getObjectContainer() {
+ return getRoles(getPlan(), false);
+ }
+
+ public static List<Role> getRoles(JAXBElement plan, boolean create) {
+ RoleMappings roleMappings = getRoleMappings(plan, create);
+ if (roleMappings != null) {
+ return roleMappings.getRole();
+ }
+ return null;
+ }
+
+ public static RoleMappings getRoleMappings(JAXBElement plan, boolean create) {
+ Security security = JAXBModelUtils.getSecurity(plan);
+ if (security == null && create) {
+ security = new Security();
+ JAXBModelUtils.setSecurity(plan, security);
+ }
+ if (security != null) {
+ RoleMappings roleMappings = security.getRoleMappings();
+ if (roleMappings == null && create) {
+ roleMappings = new RoleMappings();
+ security.setRoleMappings(roleMappings);
+ }
+ return roleMappings;
+ }
+ return null;
+ }
+
+ protected boolean addRolesFromDeploymentDescriptor() {
+ List<String> declaredRoleNames = null;
+ if (WebDeploymentDescriptor.class.isInstance(getDescriptor())) {
+ declaredRoleNames = ((WebDeploymentDescriptor)getDescriptor()).getSecurityRoles();
+ }
+ else if (ApplicationDeploymentDescriptor.class.isInstance(getDescriptor())) {
+ declaredRoleNames = ((ApplicationDeploymentDescriptor)getDescriptor()).getSecurityRoles();
+ }
+ else if (EjbDeploymentDescriptor.class.isInstance(getDescriptor())) {
+ declaredRoleNames = ((EjbDeploymentDescriptor)getDescriptor()).getSecurityRoles();
+ }
+
+ if (declaredRoleNames == null || declaredRoleNames.size() <= 0) {
+ return false;
+ }
+ List<Role> definedRoles = getRoles(getPlan(), true);
+ List<Role> newRoles = new ArrayList<Role>();
+ for (int i = 0; i < declaredRoleNames.size(); i++) {
+ String roleName = declaredRoleNames.get(i);
+ boolean roleExists = false;
+ for (int j = 0; j < definedRoles.size(); j++) {
+ if (definedRoles.get(j).getRoleName().equals(roleName)) {
+ roleExists = true;
+ break;
+ }
+ }
+ if (!roleExists) {
+ Role newRole = new Role();
+ newRole.setRoleName(roleName);
+ newRoles.add(newRole);
+ }
+ }
+ definedRoles.addAll(newRoles);
+ return newRoles.size() > 0;
+ }
+
+ @Override
+ public Object getInput() {
+ addRolesFromDeploymentDescriptor();
+ return getRoleMappings(getPlan(), false);
+ }
+
+ @Override
+ public ITreeContentProvider getContentProvider() {
+ return new ContentProvider() {
+ @Override
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ @Override
+ public Object[] getChildren(Object parentElement) {
+ if (RoleMappings.class.isInstance(parentElement)) {
+ return ((RoleMappings) parentElement).getRole().toArray();
+ }
+ if (parentElement instanceof Role) {
+ Role role = (Role) parentElement;
+ return concat(role.getDistinguishedName().toArray(), role.getPrincipal().toArray(),
+ role.getLoginDomainPrincipal().toArray(), role.getRealmPrincipal().toArray());
+ }
+ return new String[] {};
+ }
+
+ private Object[] concat(Object[] arr1, Object[] arr2, Object[] arr3, Object[] arr4) {
+ Object[] all = new Object[arr1.length + arr2.length + arr3.length + arr4.length];
+ System.arraycopy(arr1, 0, all, 0, arr1.length);
+ System.arraycopy(arr2, 0, all, arr1.length, arr2.length);
+ System.arraycopy(arr3, 0, all, arr1.length + arr2.length, arr3.length);
+ System.arraycopy(arr4, 0, all, arr1.length + arr2.length + arr3.length, arr4.length);
+ return all;
+ }
+ };
+ }
+
+ @Override
+ public ILabelProvider getLabelProvider() {
+ return new LabelProvider() {
+ @Override
+ public String getText(Object element) {
+ if (Role.class.isInstance(element)) {
+ Role role = (Role) element;
+ return "Role: role-name = \"" + role.getRoleName() + "\"";
+ }
+ else if (element instanceof DistinguishedName) {
+ DistinguishedName object = (DistinguishedName) element;
+ return "DistinguishedName: name = \"" + object.getName() + "\"";
+ }
+ else if (element instanceof RealmPrincipal) {
+ RealmPrincipal object = (RealmPrincipal) element;
+ return "RealmPrincipal: name = \"" + object.getName() +
+ "\", class = \"" + object.getClazz() +
+ "\", domain-name = \"" + object.getDomainName() +
+ "\", realm-name = \"" + object.getRealmName() +"\"";
+ }
+ else if (element instanceof LoginDomainPrincipal) {
+ LoginDomainPrincipal object = (LoginDomainPrincipal) element;
+ return "LoginDomainPrincipal: name = \"" + object.getName() +
+ "\", class = \"" + object.getClazz() +
+ "\", domain-name = \"" + object.getDomainName() +"\"";
+ }
+ else if (element instanceof Principal) {
+ Principal object = (Principal) element;
+ return "Principal: name = \"" + object.getName() +
+ "\", class = \"" + object.getClazz() + "\"";
+ }
+
+ return null;
+ }
+
+ @Override
+ public Image getImage(Object arg0) {
+ return Activator.imageDescriptorFromPlugin("org.eclipse.jst.j2ee",
+ "icons/full/obj16/security_role.gif").createImage();
+ }
+ };
+ }
+}
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityRoleMappingSection.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityRoleMappingSection.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/SecurityRoleMappingSection.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/ServerPluginSection.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/ServerPluginSection.java?rev=938593&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/ServerPluginSection.java (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/ServerPluginSection.java Tue Apr 27 18:20:22 2010
@@ -0,0 +1,136 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.st.v30.ui.sections;
+
+import org.apache.geronimo.st.v30.core.internal.Trace;
+import org.apache.geronimo.st.ui.CommonMessages;
+import org.apache.geronimo.st.ui.sections.AbstractServerEditorSection;
+import org.apache.geronimo.st.v30.core.operations.GeronimoServerPluginManager;
+import org.apache.geronimo.st.v30.ui.wizards.ServerCustomAssemblyWizard;
+import org.apache.geronimo.st.v30.ui.wizards.ServerPluginManagerDialog;
+import org.apache.geronimo.st.v30.ui.wizards.ServerPluginManagerWizard;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+import org.eclipse.wst.server.core.IServer;
+
+/**
+ * Server advanced editor section
+ *
+ * @version $Rev$ $Date$
+ */
+public class ServerPluginSection extends AbstractServerEditorSection {
+
+ private Button customAssemblyButton;
+ private Button pluginManagerButton;
+
+ public ServerPluginSection() {
+ super();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.wst.server.ui.editor.ServerEditorSection#createSection(org.eclipse.swt.widgets.Composite)
+ */
+ public void createSection(Composite parent) {
+ super.createSection(parent);
+
+ Trace.tracePoint("Entry", "ServerPluginSection.createSection", parent);
+
+ FormToolkit toolkit = getFormToolkit(parent.getDisplay());
+
+ Section section = toolkit.createSection(parent,
+ ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED
+ | ExpandableComposite.TITLE_BAR | Section.DESCRIPTION
+ | ExpandableComposite.FOCUS_TITLE);
+ section.setText(CommonMessages.plugin);
+ section.setDescription(CommonMessages.pluginActions);
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
+
+ Composite composite = toolkit.createComposite(section);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ layout.marginHeight = 5;
+ layout.marginWidth = 10;
+ layout.verticalSpacing = 5;
+ layout.horizontalSpacing = 15;
+ composite.setLayout(layout);
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ section.setClient(composite);
+
+ customAssemblyButton = toolkit.createButton(composite, CommonMessages.createCustomAssembly, SWT.PUSH);
+ customAssemblyButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
+ customAssemblyButton.addSelectionListener(new SelectionListener() {
+ public void widgetSelected(SelectionEvent e) {
+ // if the server is started, then we can bring up the dialog
+ if (isServerRunning()) {
+ GeronimoServerPluginManager pluginManager = new GeronimoServerPluginManager (gs.getServer());
+ ServerCustomAssemblyWizard wizard = new ServerCustomAssemblyWizard (pluginManager);
+ WizardDialog dialog = new WizardDialog(Display.getCurrent().getActiveShell(), wizard);
+ dialog.open();
+ if (dialog.getReturnCode() == Dialog.OK) {
+ }
+ } else {
+ MessageDialog.openError(Display.getCurrent().getActiveShell(), CommonMessages.errorOpenWizard, CommonMessages.serverNotStarted);
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+
+ pluginManagerButton = toolkit.createButton(composite, CommonMessages.convertAppsToPlugins, SWT.PUSH);
+ pluginManagerButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
+ pluginManagerButton.addSelectionListener(new SelectionListener() {
+ public void widgetSelected(SelectionEvent e) {
+ // if the server is started, then we can bring up the dialog
+ if (isServerRunning()) {
+ GeronimoServerPluginManager pluginManager = new GeronimoServerPluginManager (gs.getServer());
+ ServerPluginManagerWizard wizard = new ServerPluginManagerWizard (pluginManager);
+ ServerPluginManagerDialog dialog = new ServerPluginManagerDialog(Display.getCurrent().getActiveShell(), wizard);
+ dialog.open();
+ if (dialog.getReturnCode() == Dialog.OK) {
+ }
+ } else {
+ MessageDialog.openError(Display.getCurrent().getActiveShell(), CommonMessages.errorOpenWizard, CommonMessages.serverNotStarted);
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+
+ Trace.tracePoint("Exit", "ServerPluginSection.createSection");
+ }
+
+ private boolean isServerRunning () {
+ if (gs == null || gs.getServer() == null)
+ return false;
+
+ return gs.getServer().getServerState() == IServer.STATE_STARTED;
+ }
+}
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/ServerPluginSection.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/ServerPluginSection.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/ServerPluginSection.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/ServiceRefSection.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/ServiceRefSection.java?rev=938593&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/ServiceRefSection.java (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/ServiceRefSection.java Tue Apr 27 18:20:22 2010
@@ -0,0 +1,180 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.st.v30.ui.sections;
+
+import java.util.List;
+
+import javax.xml.bind.JAXBElement;
+
+
+import org.apache.geronimo.jee.naming.Port;
+import org.apache.geronimo.jee.naming.PortCompletion;
+import org.apache.geronimo.jee.naming.ServiceRef;
+import org.apache.geronimo.st.ui.CommonMessages;
+import org.apache.geronimo.st.ui.sections.AbstractTreeSection;
+import org.apache.geronimo.st.v30.ui.Activator;
+import org.apache.geronimo.st.v30.ui.wizards.ServiceRefWizard;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ServiceRefSection extends AbstractTreeSection {
+ public ServiceRefSection(JAXBElement plan, Composite parent, FormToolkit toolkit, int style, List serviceRefs) {
+ super(plan, parent, toolkit, style);
+ this.objectContainer = serviceRefs;
+ createClient();
+ }
+
+ @Override
+ public String getTitle() {
+ return CommonMessages.editorServiceRefTitle;
+ }
+
+ @Override
+ public String getDescription() {
+ return CommonMessages.editorServiceRefDescription;
+ }
+
+ @Override
+ public Wizard getWizard() {
+ return new ServiceRefWizard(this);
+ }
+
+ @Override
+ public Class getTableEntryObjectType() {
+ return ServiceRef.class;
+ }
+
+ @Override
+ protected void activateAddButton() {
+ if (tree.getSelectionCount() == 0 || tree.getSelection()[0].getParentItem() == null) {
+ addButton.setEnabled(true);
+ } else {
+ addButton.setEnabled(false);
+ }
+ }
+
+ public ServiceRef getSelectedObject () {
+ if (tree.getSelection().length == 0) {
+ return null;
+ }
+ return (ServiceRef)tree.getSelection()[0].getData();
+ }
+
+ @Override
+ public void removeItem(Object anItem) {
+ if (ServiceRef.class.isInstance(anItem)) {
+ getObjectContainer().remove(anItem);
+ }
+ else if (Port.class.isInstance(anItem)) {
+ ServiceRef serviceRef = (ServiceRef)tree.getSelection()[0].getParentItem().getData();
+ serviceRef.getPort().remove(anItem);
+ }
+ else if (PortCompletion.class.isInstance(anItem)) {
+ ServiceRef serviceRef = (ServiceRef)tree.getSelection()[0].getParentItem().getData();
+ serviceRef.getServiceCompletion().getPortCompletion().remove(anItem);
+ }
+ }
+
+ @Override
+ public Object getInput() {
+ if (objectContainer != null) {
+ return objectContainer;
+ }
+ return super.getInput();
+ }
+
+ @Override
+ public ITreeContentProvider getContentProvider() {
+ return new ContentProvider() {
+ @Override
+ public Object[] getElements(Object inputElement) {
+ return getChildren(inputElement);
+ }
+
+ @Override
+ public Object[] getChildren(Object parentElement) {
+ if (List.class.isInstance(parentElement)) {
+ return ((List)parentElement).toArray();
+ }
+ if (ServiceRef.class.isInstance(parentElement)) {
+ ServiceRef serviceRef = (ServiceRef)parentElement;
+ Object[] portList = serviceRef.getPort().toArray();
+ Object[] compList = new Object[0];
+ if (serviceRef.getServiceCompletion() != null) {
+ compList = serviceRef.getServiceCompletion().getPortCompletion().toArray();
+ }
+ Object[] fullList = new Object[portList.length + compList.length];
+ System.arraycopy(portList, 0, fullList, 0, portList.length);
+ System.arraycopy(compList, 0, fullList, portList.length, compList.length);
+ return fullList;
+ }
+ return new String[] {};
+ }
+ };
+ }
+
+ @Override
+ public ILabelProvider getLabelProvider() {
+ return new LabelProvider() {
+ @Override
+ public String getText(Object element) {
+ if (ServiceRef.class.isInstance(element)) {
+ ServiceRef serviceRef = (ServiceRef)element;
+ String retString = "Service Ref: name = \"" + serviceRef.getServiceRefName() + "\"";
+ if (serviceRef.getServiceCompletion() != null) {
+ retString += ", service completion name = \"" + serviceRef.getServiceCompletion().getServiceName() + "\"";
+ }
+ return retString;
+ }
+ else if (Port.class.isInstance(element)) {
+ Port port = (Port)element;
+ return "Port: name = \"" + port.getPortName() +
+ "\", protocol = \"" + port.getProtocol() +
+ "\", host = \"" + port.getHost() +
+ "\", port = \"" + port.getPort() +
+ "\", uri = \"" + port.getUri() +
+ "\", credential = \"" + port.getCredentialsName() + "\"";
+ }
+ else if (PortCompletion.class.isInstance(element)) {
+ PortCompletion portComp = (PortCompletion)element;
+ return "Port Completion: name = \"" + portComp.getPort().getPortName() +
+ "\", protocol = \"" + portComp.getPort().getProtocol() +
+ "\", host = \"" + portComp.getPort().getHost() +
+ "\", port = \"" + portComp.getPort().getPort() +
+ "\", uri = \"" + portComp.getPort().getUri() +
+ "\", credential = \"" + portComp.getPort().getCredentialsName() +
+ "\", binding name = \"" + portComp.getBindingName() + "\"";
+ }
+
+ return null;
+ }
+
+ @Override
+ public Image getImage(Object arg0) {
+ return Activator.imageDescriptorFromPlugin("org.eclipse.jst.j2ee",
+ "icons/full/obj16/module_web_obj.gif").createImage();
+ }
+ };
+ }
+}
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/ServiceRefSection.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/ServiceRefSection.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/ServiceRefSection.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/WebContainerSection.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/WebContainerSection.java?rev=938593&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/WebContainerSection.java (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/WebContainerSection.java Tue Apr 27 18:20:22 2010
@@ -0,0 +1,261 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.st.v30.ui.sections;
+
+import javax.xml.bind.JAXBElement;
+
+import org.apache.geronimo.jee.naming.GbeanLocator;
+import org.apache.geronimo.jee.naming.ObjectFactory;
+import org.apache.geronimo.jee.naming.Pattern;
+import org.apache.geronimo.jee.web.WebApp;
+import org.apache.geronimo.st.ui.CommonMessages;
+import org.apache.geronimo.st.ui.sections.AbstractSectionPart;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Section;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class WebContainerSection extends AbstractSectionPart {
+
+ protected Text gBeanLink;
+
+ protected Text artifact;
+
+ protected Text group;
+
+ protected Text module;
+
+ protected Text name;
+
+ protected Text version;
+
+ protected Button specifyAsLink;
+
+ protected Button specifyAsPattern;
+
+ WebApp plan;
+
+ private ObjectFactory namingFactory;
+
+ /**
+ * @param parent
+ * @param toolkit
+ * @param style
+ * @param plan
+ */
+ public WebContainerSection(Composite parent, FormToolkit toolkit, int style, JAXBElement plan) {
+ super(parent, toolkit, style, plan);
+ this.plan = (WebApp) plan.getValue();
+ namingFactory = new ObjectFactory();
+ createClient();
+ }
+
+ protected void createClient() {
+ Section section = getSection();
+
+ section.setText(CommonMessages.webContainerSection);
+ section.setDescription(CommonMessages.webContainerSectionDescription);
+ section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
+
+ Composite composite = toolkit.createComposite(section);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ layout.marginHeight = 5;
+ layout.marginWidth = 10;
+ layout.verticalSpacing = 5;
+ layout.horizontalSpacing = 15;
+ composite.setLayout(layout);
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ section.setClient(composite);
+
+ specifyAsLink = toolkit.createButton(composite, CommonMessages.useGBeanLink, SWT.RADIO);
+ GridData data = new GridData();
+ data.horizontalSpan = 2;
+ specifyAsLink.setLayoutData(data);
+
+ GbeanLocator wc = plan.getWebContainer();
+
+ toolkit.createLabel(composite, CommonMessages.gBeanLink);
+ String value = wc != null ? wc.getGbeanLink() : null;
+ gBeanLink = toolkit.createText(composite, value, SWT.BORDER);
+ gBeanLink.setLayoutData(createTextFieldGridData());
+ gBeanLink.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ getGBeanLocator().setGbeanLink(gBeanLink.getText());
+ markDirty();
+ }
+ });
+
+ specifyAsPattern = toolkit.createButton(composite, CommonMessages.useGBeanPattern, SWT.RADIO);
+ specifyAsPattern.setLayoutData(data);
+
+ toolkit.createLabel(composite, CommonMessages.groupId);
+ value = wc != null && wc.getPattern() != null ? wc.getPattern().getGroupId()
+ : null;
+ group = toolkit.createText(composite, value, SWT.BORDER);
+ group.setLayoutData(createTextFieldGridData());
+ group.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ getPattern().setGroupId(group.getText());
+ markDirty();
+ }
+ });
+
+ toolkit.createLabel(composite, CommonMessages.artifactId);
+ value = wc != null && wc.getPattern() != null ? wc.getPattern().getArtifactId()
+ : null;
+ artifact = toolkit.createText(composite, value, SWT.BORDER);
+ artifact.setLayoutData(createTextFieldGridData());
+ artifact.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ getPattern().setArtifactId(artifact.getText());
+ markDirty();
+ }
+ });
+
+ toolkit.createLabel(composite, CommonMessages.moduleId);
+ value = wc != null && wc.getPattern() != null ? wc.getPattern().getModule()
+ : null;
+ module = toolkit.createText(composite, value, SWT.BORDER);
+ module.setLayoutData(createTextFieldGridData());
+ module.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ getPattern().setModule(module.getText());
+ markDirty();
+ }
+ });
+
+ toolkit.createLabel(composite, CommonMessages.name);
+ value = wc != null && wc.getPattern() != null ? wc.getPattern().getName()
+ : null;
+ name = toolkit.createText(composite, value, SWT.BORDER);
+ name.setLayoutData(createTextFieldGridData());
+ name.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ getPattern().setName(name.getText());
+ markDirty();
+ }
+ });
+
+ toolkit.createLabel(composite, CommonMessages.version);
+ value = wc != null && wc.getPattern() != null ? wc.getPattern().getVersion()
+ : null;
+ version = toolkit.createText(composite, value, SWT.BORDER);
+ version.setLayoutData(createTextFieldGridData());
+ version.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ getPattern().setVersion(version.getText());
+ markDirty();
+ }
+ });
+
+ specifyAsLink.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ if (specifyAsLink.getSelection()) {
+ getGBeanLocator().setPattern(null);
+ if (gBeanLink.getText().length() > 0) {
+ plan.getWebContainer().setGbeanLink(gBeanLink.getText());
+ }
+ markDirty();
+ toggle();
+ }
+ }
+ });
+
+ specifyAsPattern.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ if (specifyAsPattern.getSelection()) {
+ if (plan.getWebContainer() != null) {
+ plan.getWebContainer().setGbeanLink (null);
+ }
+ if (group.getText().length() > 0) {
+ getPattern().setGroupId(group.getText());
+ }
+ if (artifact.getText().length() > 0) {
+ getPattern().setArtifactId(artifact.getText());
+ }
+ if (module.getText().length() > 0) {
+ getPattern().setModule(module.getText());
+ }
+ if (name.getText().length() > 0) {
+ getPattern().setName(name.getText());
+ }
+ if (version.getText().length() > 0) {
+ getPattern().setVersion(version.getText());
+ }
+ markDirty();
+ toggle();
+ }
+ }
+ });
+
+ if (wc != null) {
+ if (wc.getGbeanLink() != null) {
+ specifyAsLink.setSelection(true);
+ } else if (wc.getPattern() != null) {
+ specifyAsPattern.setSelection(true);
+ }
+ }
+
+ toggle();
+ }
+
+ public void toggle() {
+ gBeanLink.setEnabled(specifyAsLink.getSelection());
+ artifact.setEnabled(specifyAsPattern.getSelection());
+ group.setEnabled(specifyAsPattern.getSelection());
+ module.setEnabled(specifyAsPattern.getSelection());
+ name.setEnabled(specifyAsPattern.getSelection());
+ version.setEnabled(specifyAsPattern.getSelection());
+ }
+
+ /**
+ * @return
+ */
+ private GbeanLocator getGBeanLocator() {
+ GbeanLocator wc = plan.getWebContainer();
+ if (wc == null) {
+ wc = namingFactory.createGbeanLocator();
+ plan.setWebContainer(wc);
+ }
+ return wc;
+ }
+
+ /**
+ * @return
+ */
+ private Pattern getPattern() {
+ GbeanLocator locator = getGBeanLocator();
+ Pattern pattern = locator.getPattern();
+ if (pattern == null) {
+ pattern = namingFactory.createPattern();
+ locator.setPattern(pattern);
+ }
+ return pattern;
+ }
+}
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/WebContainerSection.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/WebContainerSection.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/WebContainerSection.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/WebGeneralSection.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/WebGeneralSection.java?rev=938593&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/WebGeneralSection.java (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/WebGeneralSection.java Tue Apr 27 18:20:22 2010
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.st.v30.ui.sections;
+
+import javax.xml.bind.JAXBElement;
+
+import org.apache.geronimo.jee.web.WebApp;
+import org.apache.geronimo.st.ui.CommonMessages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class WebGeneralSection extends CommonGeneralSection {
+
+ protected Text contextRoot;
+
+ protected Text workDir;
+
+ protected Text securityRealmName;
+
+ WebApp plan;
+
+ public WebGeneralSection(Composite parent, FormToolkit toolkit, int style, JAXBElement plan) {
+ super(parent, toolkit, style, plan);
+ this.plan = (WebApp) plan.getValue();
+ createClient();
+ }
+
+ protected void createClient() {
+ super.createClient();
+ Composite composite = (Composite) getSection().getClient();
+
+ createLabel(composite, CommonMessages.editorContextRoot);
+
+ contextRoot = toolkit.createText(composite, plan.getContextRoot(), SWT.BORDER);
+ contextRoot.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
+ contextRoot.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ plan.setContextRoot(contextRoot.getText());
+ markDirty();
+ }
+ });
+
+ createLabel(composite, CommonMessages.editorWorkDir);
+
+ workDir = toolkit.createText(composite, plan.getWorkDir(), SWT.BORDER);
+ workDir.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
+ workDir.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ plan.setWorkDir(workDir.getText());
+ markDirty();
+ }
+ });
+
+ createLabel(composite, CommonMessages.editorSecurityRealmName);
+
+ securityRealmName = toolkit.createText(composite, plan.getSecurityRealmName(), SWT.BORDER);
+ securityRealmName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
+ securityRealmName.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ plan.setSecurityRealmName(securityRealmName.getText());
+ markDirty();
+ }
+ });
+ }
+}
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/WebGeneralSection.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/WebGeneralSection.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/sections/WebGeneralSection.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/wizards/AdminObjectWizard.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/wizards/AdminObjectWizard.java?rev=938593&view=auto
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/wizards/AdminObjectWizard.java (added)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/wizards/AdminObjectWizard.java Tue Apr 27 18:20:22 2010
@@ -0,0 +1,190 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.st.v30.ui.wizards;
+
+import java.util.List;
+
+import org.apache.geronimo.jee.connector.Adminobject;
+import org.apache.geronimo.jee.connector.AdminobjectInstance;
+import org.apache.geronimo.jee.connector.ConfigPropertySetting;
+import org.apache.geronimo.st.core.jaxb.JAXBObjectFactory;
+import org.apache.geronimo.st.ui.CommonMessages;
+import org.apache.geronimo.st.ui.sections.AbstractTreeSection;
+import org.apache.geronimo.st.ui.wizards.AbstractTreeWizard;
+import org.apache.geronimo.st.v30.core.jaxb.JAXBObjectFactoryImpl;
+import org.apache.geronimo.st.v30.ui.sections.AdminObjectSection;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class AdminObjectWizard extends AbstractTreeWizard {
+
+ private final int ADMIN_OBJECT = 0;
+ private final int ADMIN_OBJECT_INSTANCE = 1;
+ private final int CONFIG_PROPERTY_SETTING = 2;
+
+ public AdminObjectWizard(AbstractTreeSection section) {
+ super(section, 3, 2);
+ elementTypes[ADMIN_OBJECT] = "Admin Object";
+ elementTypes[ADMIN_OBJECT_INSTANCE] = "Admin Object Instance";
+ elementTypes[CONFIG_PROPERTY_SETTING] = "Config Property";
+ }
+
+ public class EjbRelationWizardPage extends AbstractTreeWizardPage {
+
+ public EjbRelationWizardPage(String pageName) {
+ super(pageName);
+ }
+
+ protected void initControl () {
+ if (eObject == null) {
+ element.select(ADMIN_OBJECT);
+ if (Adminobject.class.isInstance(((AdminObjectSection)section).getSelectedObject())) {
+ element.remove(elementTypes[CONFIG_PROPERTY_SETTING]);
+ }
+ else if (AdminobjectInstance.class.isInstance(((AdminObjectSection)section).getSelectedObject())) {
+ element.select(CONFIG_PROPERTY_SETTING);
+ element.setEnabled(false);
+ }
+ else {
+ element.setEnabled(false);
+ }
+ }
+ else {
+ if (Adminobject.class.isInstance(eObject)) {
+ textList.get(0).setText(((Adminobject)eObject).getAdminobjectInterface());
+ textList.get(1).setText(((Adminobject)eObject).getAdminobjectClass());
+ element.select(ADMIN_OBJECT);
+ }
+ else if (AdminobjectInstance.class.isInstance(eObject)) {
+ textList.get(0).setText(((AdminobjectInstance)eObject).getMessageDestinationName());
+ element.select(ADMIN_OBJECT_INSTANCE);
+ }
+ else if (ConfigPropertySetting.class.isInstance(eObject)) {
+ textList.get(0).setText(((ConfigPropertySetting)eObject).getName());
+ textList.get(1).setText(((ConfigPropertySetting)eObject).getValue());
+ element.select(CONFIG_PROPERTY_SETTING);
+ }
+ element.setEnabled(false);
+ }
+ }
+
+ protected void toggleFields (boolean clearFields) {
+ if (element.getText().equals(elementTypes[ADMIN_OBJECT])) {
+ for (int i = 0; i < maxTextFields; i++) {
+ labelList.get(i).setVisible(true);
+ textList.get(i).setVisible(true);
+ if (clearFields == true) {
+ textList.get(i).setText("");
+ }
+ }
+ labelList.get(0).setText(CommonMessages.interfaceName);
+ labelList.get(1).setText(CommonMessages.className);
+ }
+ else if (element.getText().equals(elementTypes[ADMIN_OBJECT_INSTANCE])) {
+ for (int i = 0; i < maxTextFields; i++) {
+ labelList.get(i).setVisible(i < 1 ? true : false);
+ textList.get(i).setVisible(i < 1 ? true : false);
+ if (clearFields == true) {
+ textList.get(i).setText("");
+ }
+ }
+ labelList.get(0).setText(CommonMessages.messageDestinationName);
+ }
+ else if (element.getText().equals(elementTypes[CONFIG_PROPERTY_SETTING])) {
+ for (int i = 0; i < maxTextFields; i++) {
+ labelList.get(i).setVisible(true);
+ textList.get(i).setVisible(true);
+ if (clearFields == true) {
+ textList.get(i).setText("");
+ }
+ }
+ labelList.get(0).setText(CommonMessages.name);
+ labelList.get(1).setText(CommonMessages.value);
+ }
+ }
+
+ public String getWizardPageTitle() {
+ return CommonMessages.wizardPageTitle_AdminObject;
+ }
+
+ public String getWizardPageDescription() {
+ return CommonMessages.wizardPageDescription_AdminObject;
+ }
+ }
+
+ @Override
+ public void addPages() {
+ addPage(new EjbRelationWizardPage("Page0"));
+ }
+
+ @Override
+ public boolean performFinish() {
+ Adminobject admin;
+ if (element.getText().equals(elementTypes[ADMIN_OBJECT])) {
+ if (isEmpty(textList.get(0).getText()) || isEmpty(textList.get(1).getText())) {
+ return false;
+ }
+ admin = (Adminobject)eObject;
+ if (admin == null) {
+ admin = (Adminobject)getEFactory().create(Adminobject.class);
+ List objectList = (List)section.getInput();
+ objectList.add (admin);
+ }
+ admin.setAdminobjectInterface(textList.get(0).getText());
+ admin.setAdminobjectClass(textList.get(1).getText());
+ }
+ else if (element.getText().equals(elementTypes[ADMIN_OBJECT_INSTANCE])) {
+ if (isEmpty(textList.get(0).getText())) {
+ return false;
+ }
+ AdminobjectInstance aoInstance = (AdminobjectInstance)eObject;
+ if (aoInstance == null) {
+ aoInstance = (AdminobjectInstance)getEFactory().create(AdminobjectInstance.class);
+ admin = (Adminobject)((AdminObjectSection)section).getSelectedObject();
+ admin.getAdminobjectInstance().add(aoInstance);
+ }
+ aoInstance.setMessageDestinationName(textList.get(0).getText());
+ }
+ else if (element.getText().equals(elementTypes[CONFIG_PROPERTY_SETTING])) {
+ if (isEmpty(textList.get(0).getText()) || isEmpty(textList.get(1).getText())) {
+ return false;
+ }
+ ConfigPropertySetting property = (ConfigPropertySetting)eObject;
+ if (property == null) {
+ property = (ConfigPropertySetting)getEFactory().create(ConfigPropertySetting.class);
+ AdminobjectInstance aoInstance = (AdminobjectInstance)((AdminObjectSection)section).getSelectedObject();
+ aoInstance.getConfigPropertySetting().add(property);
+ }
+ property.setName(textList.get(0).getText());
+ property.setValue(textList.get(1).getText());
+ }
+ return true;
+ }
+
+ public JAXBObjectFactory getEFactory() {
+ return JAXBObjectFactoryImpl.getInstance();
+ }
+
+ public String getAddWizardWindowTitle() {
+ return CommonMessages.wizardNewTitle_AdminObject;
+ }
+
+ public String getEditWizardWindowTitle() {
+ return CommonMessages.wizardEditTitle_AdminObject;
+ }
+}
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/wizards/AdminObjectWizard.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/wizards/AdminObjectWizard.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.ui/src/main/java/org/apache/geronimo/st/v30/ui/wizards/AdminObjectWizard.java
------------------------------------------------------------------------------
svn:mime-type = text/plain