/* * Copyright 2005 Red Hat, Inc. and/or its affiliates. * * 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.kie.workbench.common.widgets.metadata.client.widget; import javax.inject.Inject; import com.google.gwt.user.client.ui.IsWidget; import com.google.gwt.user.client.ui.Widget; import org.guvnor.common.services.shared.metadata.model.Metadata; /** * This is a viewer/selector for tags. * It will show a list of tags currently applicable, and allow you to * remove/add to them. * <p/> * It is intended to work with the meta data form. */ public class TagWidget implements IsWidget { private Metadata data; private TagWidgetView view; private boolean readOnly; @Inject public void setView( TagWidgetView view ) { this.view = view; view.setPresenter( this ); } /** * @param d The meta data. * @param readOnly If it is to be non editable. */ public void setContent( Metadata d, boolean readOnly ) { this.data = d; this.readOnly = readOnly; view.setReadOnly(readOnly); loadData(); } public void onAddTags( String text ) { if (text != null) { String[] tags = text.split( " " ); for (String tag : tags) { if (!data.getTags().contains( tag )) { data.addTag( tag ); view.addTag( tag, readOnly ); } } } } public void onRemoveTag( String tag ) { data.getTags().remove( tag ); loadData(); } public void loadData( ) { view.clear(); for (String tag : data.getTags()) { view.addTag( tag, readOnly ); } } @Override public Widget asWidget() { if (view == null) initView(); return view.asWidget(); } // TODO: remove this method when the MetaDataWidget is moved to MVP private void initView() { setView( new TagWidgetViewImpl() ); } }