001/* 002 * #%L 003 * GwtMaterial 004 * %% 005 * Copyright (C) 2015 - 2017 GwtMaterialDesign 006 * %% 007 * Licensed under the Apache License, Version 2.0 (the "License"); 008 * you may not use this file except in compliance with the License. 009 * You may obtain a copy of the License at 010 * 011 * http://www.apache.org/licenses/LICENSE-2.0 012 * 013 * Unless required by applicable law or agreed to in writing, software 014 * distributed under the License is distributed on an "AS IS" BASIS, 015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 016 * See the License for the specific language governing permissions and 017 * limitations under the License. 018 * #L% 019 */ 020package gwt.material.design.addins.client.fileuploader; 021 022import com.google.gwt.dom.client.Document; 023import com.google.gwt.dom.client.Style; 024import gwt.material.design.addins.client.base.constants.AddinsCssName; 025import gwt.material.design.client.base.MaterialWidget; 026import gwt.material.design.client.constants.IconType; 027import gwt.material.design.client.constants.ProgressType; 028import gwt.material.design.client.constants.WavesType; 029import gwt.material.design.client.ui.MaterialIcon; 030import gwt.material.design.client.ui.MaterialProgress; 031import gwt.material.design.client.ui.html.Span; 032 033import static gwt.material.design.jquery.client.api.JQuery.$; 034 035public class MaterialUploadHeader extends MaterialWidget { 036 037 private boolean toggle = true; 038 private Span uploadedFiles = new Span(); 039 private MaterialIcon iconClose = new MaterialIcon(IconType.CLOSE); 040 private MaterialIcon iconColaps = new MaterialIcon(IconType.KEYBOARD_ARROW_DOWN); 041 private MaterialUploadPreview preview; 042 private MaterialProgress progress = new MaterialProgress(ProgressType.DETERMINATE); 043 044 public MaterialUploadHeader() { 045 super(Document.get().createDivElement(), AddinsCssName.HEADER); 046 047 iconClose.setId(AddinsCssName.UPLOAD_CLOSE); 048 iconClose.setCircle(true); 049 iconClose.setWaves(WavesType.DEFAULT); 050 iconColaps.setId(AddinsCssName.UPLOAD_COLAPS); 051 iconColaps.setCircle(true); 052 iconColaps.setWaves(WavesType.DEFAULT); 053 uploadedFiles.setId(AddinsCssName.NO_UPLOADED_FILES); 054 progress.setId(AddinsCssName.TOTAL_UPLOAD_PROGRESS); 055 add(uploadedFiles); 056 add(iconClose); 057 add(iconColaps); 058 add(progress); 059 } 060 061 @Override 062 protected void onLoad() { 063 super.onLoad(); 064 065 $(iconColaps.getElement()).click(e -> { 066 if (toggle) { 067 $(getPreview().getUploadCollection().getElement()).css("visibility", "hidden"); 068 $(iconColaps).html("keyboard_arrow_up"); 069 $(getPreview().getUploadCollection().getElement()).css("height", "0px"); 070 toggle = false; 071 } else { 072 $(getPreview().getUploadCollection().getElement()).css("visibility", "visible"); 073 $(iconColaps).html("keyboard_arrow_down"); 074 $(getPreview().getUploadCollection().getElement()).css("height", "initial"); 075 toggle = true; 076 } 077 return true; 078 }); 079 080 registerHandler(iconClose.addClickHandler(clickEvent -> preview.setVisibility(Style.Visibility.HIDDEN))); 081 } 082 083 public MaterialUploadPreview getPreview() { 084 return preview; 085 } 086 087 public void setPreview(MaterialUploadPreview preview) { 088 this.preview = preview; 089 } 090 091 public Span getUploadedFiles() { 092 return uploadedFiles; 093 } 094 095 public MaterialIcon getIconClose() { 096 return iconClose; 097 } 098 099 public MaterialIcon getIconColaps() { 100 return iconColaps; 101 } 102 103 public MaterialProgress getProgress() { 104 return progress; 105 } 106}