/** * Copyright 2010 JBoss 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://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.drools.guvnor.client.common; /* * Copyright 2005 JBoss 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://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. */ import org.drools.guvnor.client.rpc.RepositoryServiceFactory; import org.drools.guvnor.client.rpc.TableDataResult; import org.drools.guvnor.client.rulelist.AssetItemGrid; import com.google.gwt.core.client.Scheduler; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.ListBox; /** * A rule package selector widget. */ public class GlobalAreaAssetSelector extends Composite { /** Used to remember what the "current asset" we are working in is... * Should be the one the user has most recently dealt with... */ public static String currentlySelectedAsset; private ListBox assetList; private String format; public GlobalAreaAssetSelector(String formatToImport) { assetList = new ListBox(); if(formatToImport == null) { //default format this.format = AssetFormats.BUSINESS_RULE; } else { this.format = formatToImport; } Scheduler.get().scheduleDeferred( new Command() { public void execute() { loadAssetList(); } }); initWidget( assetList ); } private void loadAssetList() { RepositoryServiceFactory.getService().listAssetsWithPackageName("globalArea", new String[]{format}, 0, -1, AssetItemGrid.RULE_LIST_TABLE_ID, new GenericCallback<TableDataResult>() { public void onSuccess(TableDataResult result) { for (int i = 0; i < result.data.length; i++) { assetList.addItem(result.data[i].getDisplayName(), result.data[i].id); if (currentlySelectedAsset != null && result.data[i].equals( currentlySelectedAsset )) { assetList.setSelectedIndex( i ); } } assetList.addChangeHandler(new ChangeHandler() { public void onChange(ChangeEvent sender) { currentlySelectedAsset = getSelectedAsset(); } }); } public void onFailure(Throwable t) { if ( t.getMessage().indexOf( "AuthorizationException" ) > -1 ) { //Do nothing, just leave asset list empty. //Window.alert( "No permission to access global area" ); } else { super.onFailure( t ); } } }); } /** * Returns the selected package. */ public String getSelectedAsset() { return assetList.getItemText( assetList.getSelectedIndex() ); } }