ManageUserProfilePanel.java :  » App » imhotep » piramide » interaction » reasoner » web » client » ui » profile » Android Open Source

Android Open Source » App » imhotep 
imhotep » piramide » interaction » reasoner » web » client » ui » profile » ManageUserProfilePanel.java
/*
 * Copyright (C) 2010 PIRAmIDE-SP3 authors
 *
 * 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.
 * 
 * This software consists of contributions made by many individuals, 
 * listed below:
 *
 * Author: Aitor Almeida <aitor.almeida@deusto.es>
 *         Pablo Ordua <pablo.orduna@deusto.es>
 *         Eduardo Castillejo <eduardo.castillejo@deusto.es>
 *
 */
package piramide.interaction.reasoner.web.client.ui.profile;

import java.util.Map;

import piramide.interaction.reasoner.web.client.ui.IMainWindow;
import piramide.interaction.reasoner.web.client.ui.common.Styles;
import piramide.interaction.reasoner.web.client.ui.common.i18n.IPiramideMessages;
import piramide.interaction.reasoner.web.shared.model.UserCapabilities;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;

public class ManageUserProfilePanel extends Composite {

  private static ManageUserProfilePanelUiBinder uiBinder = GWT
      .create(ManageUserProfilePanelUiBinder.class);
  
  private static IPiramideMessages messages = GWT.create(IPiramideMessages.class);

  interface ManageUserProfilePanelUiBinder extends
      UiBinder<Widget, ManageUserProfilePanel> {
  }
  
  private final IMainWindow mainWindow;
  private final int CAPABILITY_COLUMN_NUMBER = 2;
  
  @UiField
  FlexTable profileTable;
  
  @UiField
  HorizontalPanel addCapabilityPanel;
  
  @UiField
  ListBox capabilityNameListBox;
  
  @UiField
  TextBox valueTextbox;

  public ManageUserProfilePanel(IMainWindow mainWindow) {
    
    this.mainWindow = mainWindow;
    
    initWidget(uiBinder.createAndBindUi(this));
    
    final Map<String, String> capabilities = this.mainWindow.getCompilingConfiguration().getProfile().getCapabilities();
    
    int counter = 0;
    
    for(final String capability : capabilities.keySet()){
      addRow(capabilities, counter, capability);
      counter++;
    }
    
    showAddButton();
  }

  
  private void addRow(final Map<String, String> capabilities, int counter, final String capability) {
    final Label capabilityNameLabel = new Label(messages.capability() + ":");
    capabilityNameLabel.setStyleName(Styles.important);
    this.profileTable.setWidget(counter, 1, capabilityNameLabel);
    
    final Label capabilityNameValue = new Label(capability);
    this.profileTable.setWidget(counter, this.CAPABILITY_COLUMN_NUMBER, capabilityNameValue);
    
    final Label capabilityValueLabel = new Label(messages.capability() + ":");
    capabilityValueLabel.setStyleName(Styles.important);
    this.profileTable.setWidget(counter, 3, capabilityValueLabel);
    
    final Label capabilityValueValue = new Label(capabilities.get(capability));
    this.profileTable.setWidget(counter, 4, capabilityValueValue);
    
    final Button delete = new Button(messages.delete());
    this.profileTable.setWidget(counter, 5, delete);
    
    delete.addClickHandler(new ClickHandler() {
      @Override
      public void onClick(ClickEvent event) {
        capabilities.remove(capability);
        removeCapability(capability);
        showAddButton();
      }
    });
  }
  
  @UiHandler("addButton")
  void onAddButtonClicked(ClickEvent event){
    final String item  = this.capabilityNameListBox.getItemText(this.capabilityNameListBox.getSelectedIndex());
    final String value = this.valueTextbox.getText();
    final Map<String, String> capabilities = this.mainWindow.getCompilingConfiguration().getProfile().getCapabilities();
    capabilities.put(item, value);
    
    addRow(capabilities, this.profileTable.getRowCount(), item);
    showAddButton();
    this.valueTextbox.setText("");
  }
  
  private void showAddButton(){
    final Map<String, String> capabilities = this.mainWindow.getCompilingConfiguration().getProfile().getCapabilities();
    
    if(UserCapabilities.values().size() == capabilities.size()){
      this.addCapabilityPanel.setVisible(false);
      return;
    }
    
    this.addCapabilityPanel.setVisible(true);
    
    this.capabilityNameListBox.clear();
    
    for(String capability : UserCapabilities.values())
      if(!capabilities.containsKey(capability))
        this.capabilityNameListBox.addItem(capability);
    
  }

  private void removeCapability(final String capability) {
    
    for(int rowNumber = 0; rowNumber < ManageUserProfilePanel.this.profileTable.getRowCount(); ++rowNumber){
      final String capabilityName = ((Label)ManageUserProfilePanel.this.profileTable.getWidget(rowNumber, this.CAPABILITY_COLUMN_NUMBER)).getText();
      if(capabilityName.equals(capability))
        ManageUserProfilePanel.this.profileTable.removeRow(rowNumber);
    }
    
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.