/*******************************************************************************
* Copyright (c) 2012 - 2015 hangum.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* hangum - initial API and implementation
******************************************************************************/
package com.hangum.tadpole.preference.ui;
import org.apache.log4j.Logger;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.rap.rwt.RWT;
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.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import com.hangum.tadpole.commons.google.analytics.AnalyticCaller;
import com.hangum.tadpole.commons.libs.core.define.PublicTadpoleDefine;
import com.hangum.tadpole.commons.libs.core.message.CommonMessages;
import com.hangum.tadpole.commons.util.Utils;
import com.hangum.tadpole.preference.Messages;
import com.hangum.tadpole.preference.define.PreferenceDefine;
import com.hangum.tadpole.preference.get.GetSecurityCredentialPreference;
/**
* security credentials
*
*
* @author hangum
* @version 1.6.1
* @since 2015. 5. 23.
*
*/
public class SecurityCredentialPreference extends TadpoleDefaulPreferencePage implements IWorkbenchPreferencePage {
private static final Logger logger = Logger.getLogger(SecurityCredentialPreference.class);
/** 사용자 억세스 키 시크릿 키를 보여준다 */
public static String TEMPLATE_API_KEY = "TDB_ACCESS_KEY: %s\nTDB_SECRET_KEY: %s";
private Combo comboIsUse;
private Text textAccessKey;
private Text textSecretKey;
private Text textHeader;
/**
* Create the preference page.
*/
public SecurityCredentialPreference() {
}
/**
* Create contents of the preference page.
* @param parent
*/
@Override
public Control createContents(Composite parent) {
Composite container = new Composite(parent, SWT.NULL);
container.setLayout(new GridLayout(3, false));
Label lblUse = new Label(container, SWT.NONE);
lblUse.setText(Messages.get().SecurityCredentialPreference_0);
comboIsUse = new Combo(container, SWT.READ_ONLY);
comboIsUse.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
for(PublicTadpoleDefine.YES_NO YESNO : PublicTadpoleDefine.YES_NO.values()) {
comboIsUse.add(YESNO.name());
}
comboIsUse.select(0);
Label lblAccesskey = new Label(container, SWT.NONE);
lblAccesskey.setText(Messages.get().SecurityCredentialPreference_1);
textAccessKey = new Text(container, SWT.BORDER);
textAccessKey.setEditable(false);
textAccessKey.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
Label lblSecretKey = new Label(container, SWT.NONE);
lblSecretKey.setText(Messages.get().SecurityCredentialPreference_2);
textSecretKey = new Text(container, SWT.BORDER);
textSecretKey.setEditable(false);
textSecretKey.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
Button btnGenerateKey = new Button(container, SWT.NONE);
btnGenerateKey.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if(!MessageDialog.openConfirm(getShell(), Messages.get().SecurityCredentialPreference_3, Messages.get().SecurityCredentialPreference_4)) return;
textSecretKey.setText(Utils.getUniqueID());
textHeader.setText(String.format(TEMPLATE_API_KEY, textAccessKey.getText(), textSecretKey.getText()));
}
});
btnGenerateKey.setText(Messages.get().SecurityCredentialPreference_5);
Group grpUsage = new Group(container, SWT.NONE);
grpUsage.setLayout(new GridLayout(1, false));
grpUsage.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 3, 1));
grpUsage.setText("Usage");
Label lblHttpRequestHeader = new Label(grpUsage, SWT.NONE);
lblHttpRequestHeader.setText("HTTP Header");
textHeader = new Text(grpUsage, SWT.BORDER | SWT.MULTI);
textHeader.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
Label lblDocUrl = new Label(container, SWT.NONE);
lblDocUrl.setData( RWT.MARKUP_ENABLED, Boolean.TRUE );
lblDocUrl.setText(Messages.get().RESTAPI_Help);
new Label(container, SWT.NONE);
initDefaultValue();
// google analytic
AnalyticCaller.track(this.getClass().getName());
return container;
}
/**
* 페이지 초기값 로딩
*/
private void initDefaultValue() {
comboIsUse.setText(GetSecurityCredentialPreference.getSecurityCredentialUse());
textAccessKey.setText(GetSecurityCredentialPreference.getAccessValue());
textSecretKey.setText(GetSecurityCredentialPreference.getSecretValue());
// make request header
textHeader.setText(String.format(TEMPLATE_API_KEY, GetSecurityCredentialPreference.getAccessValue(), GetSecurityCredentialPreference.getSecretValue()));
}
@Override
public boolean performOk() {
String isUse = comboIsUse.getText();
String txtAccessKey = textAccessKey.getText();
String txtSecretKey = textSecretKey.getText();
try {
updateInfo(PreferenceDefine.SECURITY_CREDENTIAL_USE, isUse);
updateInfo(PreferenceDefine.SECURITY_CREDENTIAL_ACCESS_KEY, txtAccessKey);
updateInfo(PreferenceDefine.SECURITY_CREDENTIAL_SECRET_KEY, txtSecretKey);
} catch(Exception e) {
logger.error("api security credential saveing", e); //$NON-NLS-1$
MessageDialog.openError(getShell(), CommonMessages.get().Confirm, Messages.get().GeneralPreferencePage_2 + e.getMessage()); //$NON-NLS-1$
return false;
}
return super.performOk();
}
@Override
public boolean performCancel() {
initDefaultValue();
return super.performCancel();
}
@Override
protected void performApply() {
super.performApply();
}
@Override
protected void performDefaults() {
initDefaultValue();
super.performDefaults();
}
/* (non-Javadoc)
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
*/
@Override
public void init(IWorkbench workbench) {
}
}