package kz.cafe.admin;

import java.util.*;
import kz.cafe.admin.constants.AccessConstants.EditMode;
import kz.cafe.admin.panel_extensions.*;
import kz.cafe.admin.panels.*;
import kz.cafe.admin.panels.model.*;
import kz.cafe.db.*;
import kz.cafe.db.Constraint.Criterion;
import kz.cafe.db.model.*;

/**
 * Main application class.
 */
public class TabImages extends AbstractTab{
   private static final long serialVersionUID = -8310614426300855023L;


   

   public TabImages(AdminMain application, Set<EditMode> setMode){
      super(application, setMode);
   }

   
   
   
   @Override
   public DBListPanel<MCafeImage> build(){
		CustomDescriptor dscr = new CustomDescriptor();
		
		CustomField field = new CustomField();
		field.visible = true;
		field.search.mode = CustomField.Search.SEARCH_MODES.INTEGER;
		field.name = "ID";
      field.db = "ID";
      field.isEditable = false;
      field.style.width = 50;
		field.isSortable = true;
		field.search.row = 0;
      dscr.addField(field);
      
      
      CustomImageField fieldLogo = new CustomImageField();
      fieldLogo.visible = true;
      fieldLogo.name = "Изображение";
      fieldLogo.db = "image";
      fieldLogo.isEditable = true;
      fieldLogo.style.width = 110;
      fieldLogo.style.height = 80;
      fieldLogo.isImageInTable = true;
      dscr.addField(fieldLogo);
      

		
		
      field = new CustomField();
      field.visible = true;
      field.name = "Название";
      field.db = "name";
      field.isEditable = true;
      field.style.width = 200;
      field.isMust = true;
      field.search.mode = CustomField.Search.SEARCH_MODES.LOCALIZED_STRING;
      dscr.addField(field);
      
      
      
      
      field = new CustomField();
      field.visible = true;
      field.name = "Описание";
      field.db = "description";
      field.isEditable = true;
      field.style.width = 0;
      field.search.mode = CustomField.Search.SEARCH_MODES.LOCALIZED_STRING;
      field.search.row = 0;
      dscr.addField(field);
      
      
      
      
      
      if(application.isAdmin){
         CustomFixedComboField ccf = new CustomFixedComboField();
         ccf.visible = true;
         ccf.name = "Владелец";
         ccf.db = MAbstractDataElement.F_OWNER_ID;
         ccf.isEditable = true;
         ccf.style.width = 120;
         ccf.isMust = true;
         //ccf.search.mode = CustomField.Search.SEARCH_MODES.NONE;
         ccf.search.row = 2;
         dscr.addField(ccf);
      }
      
      
      
      
      
      
      CustomDatabaseComboField ccf = new CustomDatabaseComboField();
      ccf.visible = true;
      ccf.name = "Объект";
      ccf.db = "CID";
      ccf.isEditable = true;
      ccf.style.width = 100;
      ccf.isMust = true;
      ccf.search.row = 1;
      
      if(application.isAdmin){
      }
      else{
         //Let's show only our objects
         ccf.constraint.criteria.add(new Criterion(MAbstractDataElement.F_OWNER_ID, application.UID));
      }
      dscr.addField(ccf);      
      
      
      
      

      
      field = new CustomField();
      field.visible = true;
      field.name = "Опубликовано";
      field.db = "published";
      field.isEditable = true;
      field.style.width = 40;
      field.isSortable = true;
      field.search.mode = CustomField.Search.SEARCH_MODES.BOOLEAN_ONLY_TRUE; 
      field.search.row = 1;
      dscr.addField(field);
      
      
      
      field = new CustomField();
      field.visible = true;
      field.search.mode = CustomField.Search.SEARCH_MODES.INTEGER;
      field.name = "Порядок";
      field.db = "order";
      field.isEditable = true;
      field.style.width = 50;
      field.isSortable = true;
      field.style.expandable = false;
      field.search.row = 0;
      dscr.addField(field);
      

      
      Constraint constraint = new Constraint();
      
      if(application.isAdmin){
      }
      else{
         constraint.criteria.add(new Constraint.Criterion(MUser.F_OWNER_ID, application.UID));
      }
      
      
      
      DBListPanel<MCafeImage> panel = new DBListPanel<MCafeImage>(application,
                                          MCafeImage.class,
                                          dscr,
                                          Dimension.getFull(application),
                                          setMode,
                                          constraint);
      panel.addPanel(new ExtraPanelImageUploader(panel, fieldLogo), false);
//      panel.addPanel(new ExtraPanelMany2Many(application, "Проходит в ...", MCafe.class, new HashSet(), ViewConstants.EditMode.NONE, panel), false);
      
      
		return panel;
	}



   @Override
   public DBSingle build(int ID){
      // TODO Auto-generated method stub
      return null;
   }

}

