/* * ModeShape (http://www.modeshape.org) * * 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.modeshape.web.client.repo; import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.layout.VLayout; import java.util.Collection; import org.modeshape.web.client.Console; import org.modeshape.web.client.JcrServiceAsync; import org.modeshape.web.shared.RepositoryName; /** * * @author kulikov */ public class RepositoriesList extends VLayout { private RepositoryItem[] items = new RepositoryItem[100]; private JcrServiceAsync jcrService; private Console console; private String selected; public RepositoriesList(Console console, JcrServiceAsync jcrService) { this.console = console; this.jcrService = jcrService; for (int i = 0; i < items.length; i++) { items[i] = new RepositoryItem(); addMember(items[i]); } } public String getSelected() { return selected; } public void show(Collection<RepositoryName> repos) { for (int i = 0; i < items.length; i++) { items[i].setVisible(false); } int i = 0; for (RepositoryName repo : repos) { items[i++].show(repo.getName(), repo.getDescriptor()); } } public void load() { jcrService.getRepositories(new AsyncCallback<Collection<RepositoryName>>() { @Override public void onFailure(Throwable caught) { SC.say(caught.getMessage()); } @SuppressWarnings( "synthetic-access" ) @Override public void onSuccess(Collection<RepositoryName> result) { try { console.hideRepository(); show(result); console.display(RepositoriesList.this); } catch (Exception e) { SC.say(e.getMessage()); } } }); } public void select(String repository, String workspace, String path, boolean changeHistory) { selected = repository; console.displayContent(repository, workspace, path, changeHistory); } private class RepositoryItem extends VLayout { private Label name = new Label(); private Canvas descriptor = new Label(); public RepositoryItem() { super(); setVisible(false); setStyleName("repository"); name.setHeight(30); name.setStyleName("repository-name"); name.setIcon("icons/logo-1.png"); name.addClickHandler(new ClickHandler() { @SuppressWarnings( "synthetic-access" ) @Override public void onClick(ClickEvent event) { Label repo = (Label)event.getSource(); selected = repo.getContents(); console.displayContent(selected, true); } }); addMember(name); addMember(descriptor); } public void show(String name, String descriptor) { this.name.setContents(name); this.descriptor.setContents(descriptor); this.show(); } } }