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}