/******************************************************************************* * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * 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. * *******************************************************************************/ package com.liferay.ide.project.ui.action; import com.liferay.ide.core.util.CoreUtil; import com.liferay.ide.project.core.model.NewLiferayPluginProjectOp; import com.liferay.ide.project.core.model.NewLiferayProfile; import com.liferay.ide.project.ui.wizard.NewLiferayPluginProjectWizard; import org.eclipse.sapphire.ui.Presentation; import org.eclipse.sapphire.ui.def.DefinitionLoader; import org.eclipse.sapphire.ui.forms.PropertyEditorActionHandler; import org.eclipse.sapphire.ui.forms.swt.SapphireDialog; import org.eclipse.sapphire.ui.forms.swt.SwtPresentation; /** * @author Gregory Amerson */ public class NewLiferayProfileActionHandler extends PropertyEditorActionHandler { @Override protected Object run( Presentation context ) { if( context instanceof SwtPresentation ) { final SwtPresentation swt = (SwtPresentation) context; final NewLiferayPluginProjectOp op = op( context ); final NewLiferayProfile newLiferayProfile = op.getNewLiferayProfiles().insert(); final SapphireDialog dialog = new SapphireDialog( swt.shell(), newLiferayProfile, DefinitionLoader.sdef( NewLiferayPluginProjectWizard.class ).dialog( "NewLiferayProfile" ) ); dialog.setBlockOnOpen( true ); final int result = dialog.open(); if( result == SapphireDialog.OK ) { addToActiveProfiles( op, newLiferayProfile ); } else { op.getNewLiferayProfiles().remove( newLiferayProfile ); } } return null; } public static void addToActiveProfiles( final NewLiferayPluginProjectOp op, final NewLiferayProfile newLiferayProfile ) { // should append to current list final String activeProfilesValue = op.getActiveProfilesValue().content(); final StringBuilder sb = new StringBuilder(); if( ! CoreUtil.isNullOrEmpty( activeProfilesValue ) ) { sb.append( activeProfilesValue ); sb.append( ',' ); } sb.append( newLiferayProfile.getId().content() ); op.setActiveProfilesValue( sb.toString() ); } private NewLiferayPluginProjectOp op( Presentation context ) { return context.part().getLocalModelElement().nearest( NewLiferayPluginProjectOp.class ); } }