/* * Copyright 2013 Amazon Technologies, Inc. * * Licensed 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://aws.amazon.com/apache2.0 * * This file 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 com.amazonaws.eclipse.identitymanagement.role; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import com.amazonaws.eclipse.core.AwsToolkitCore; import com.amazonaws.eclipse.explorer.identitymanagement.EditorInput; import com.amazonaws.services.identitymanagement.AmazonIdentityManagement; import com.amazonaws.services.identitymanagement.model.GetRolePolicyRequest; import com.amazonaws.services.identitymanagement.model.PutRolePolicyRequest; import com.amazonaws.services.identitymanagement.model.Role; class ShowRolePolicyDialog extends TitleAreaDialog { private String policyName; private boolean edittable; private Text policyText; EditorInput roleEditorInput; private Role role; private AmazonIdentityManagement iam; public ShowRolePolicyDialog(AmazonIdentityManagement iam, Shell parentShell, Role role, String policyName, boolean edittable) { super(parentShell); this.role = role; this.policyName = policyName; this.edittable = edittable; this.iam = iam; } @Override protected Control createContents(Composite parent) { Control contents = super.createContents(parent); setTitle("Policy Name :"); setMessage(policyName); setTitleImage(AwsToolkitCore.getDefault().getImageRegistry().get(AwsToolkitCore.IMAGE_AWS_LOGO)); return contents; } @Override protected Control createDialogArea(Composite parent) { Composite composite = (Composite) super.createDialogArea(parent); composite.setLayout(new GridLayout()); policyText = new Text(composite, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); try { policyText.setText(getPolicy(policyName)); } catch (Exception e) { setErrorMessage(e.getMessage()); } policyText.setLayoutData(new GridData(GridData.FILL_BOTH)); if (!edittable) { policyText.setEditable(false); } Dialog.applyDialogFont(parent); return composite; } @Override protected void okPressed() { try { if (edittable) { putPolicy(policyName, policyText.getText()); } } catch (Exception e) { setErrorMessage(e.getMessage()); return; } super.okPressed(); } private void putPolicy(String policyName, String policyDoc) { iam.putRolePolicy(new PutRolePolicyRequest().withRoleName(role.getRoleName()).withPolicyDocument(policyDoc).withPolicyName(policyName)); } private String getPolicy(String policyName) throws UnsupportedEncodingException { String policyDoc = iam.getRolePolicy(new GetRolePolicyRequest().withPolicyName(policyName).withRoleName(role.getRoleName())).getPolicyDocument(); return URLDecoder.decode(policyDoc, "UTF-8"); } }