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.*;
027import gwt.material.design.client.ui.*;
028import gwt.material.design.client.ui.html.Span;
029
030public class MaterialUploadCollection extends MaterialCollection {
031
032    private MaterialCollectionItem item = new MaterialCollectionItem();
033    private MaterialWidget dropInfo = new MaterialWidget(Document.get().createDivElement());
034    private MaterialWidget nameWrapper = new MaterialWidget(Document.get().createDivElement());
035    private MaterialWidget errorWrapper = new MaterialWidget(Document.get().createDivElement());
036    private Span name = new Span();
037    private Span size = new Span();
038    private Span errorMessage = new Span();
039    private MaterialCollectionSecondary secondaryAction = new MaterialCollectionSecondary();
040    private MaterialButton btnClear = new MaterialButton(ButtonType.FLOATING);
041    private MaterialIcon previewIcon = new MaterialIcon(IconType.INSERT_DRIVE_FILE);
042
043    private MaterialProgress progress = new MaterialProgress();
044
045    public MaterialUploadCollection() {
046        // Element property
047        setStyleName(AddinsCssName.PREVIEWS);
048        addStyleName(CssName.CARD);
049
050        // Collection Item property that contain the upload info, progress bar and action panel
051        item.setId(AddinsCssName.ZDROP_TEMPLATE);
052        item.addStyleName(AddinsCssName.CLEARHACK + " " + CssName.VALIGN_WRAPPER + " " + AddinsCssName.ITEM_TEMPLATE);
053        add(item);
054
055        // Upload Information
056        dropInfo.addStyleName(CssName.LEFT + " " + AddinsCssName.PV + " " + AddinsCssName.ZDROP_INFO);
057        dropInfo.setDataAttribute("data-dz-thumbnail", "");
058        item.add(dropInfo);
059
060        // Upload Information - Upload Name info
061        nameWrapper.add(name);
062        name.setTruncate(true);
063        name.setWidth("200px");
064        name.setDataAttribute("data-dz-name", "");
065        nameWrapper.add(size);
066        size.setDataAttribute("data-dz-size", "");
067        dropInfo.add(nameWrapper);
068
069        previewIcon.setFloat(Style.Float.LEFT);
070        previewIcon.addStyleName(AddinsCssName.PREVIEW_ICON);
071        dropInfo.add(previewIcon);
072
073        // Upload Information - Progress bar indication of upload queues
074        progress.setType(ProgressType.DETERMINATE);
075        progress.getWidget(0).getElement().setAttribute("data-dz-uploadprogress", "");
076        progress.setPercent(0);
077        dropInfo.add(progress);
078
079        // Upload Information - Error message
080        errorWrapper.setStyleName(AddinsCssName.DZ_ERROR_MESSAGE);
081        errorMessage.setDataAttribute("data-dz-errormessage", "");
082        errorMessage.setId(AddinsCssName.ERROR_MESSAGE);
083        errorWrapper.add(errorMessage);
084        dropInfo.add(errorWrapper);
085
086        // Secondary Action Panel
087        btnClear.setId(AddinsCssName.DZ_REMOVE);
088        btnClear.setBackgroundColor(Color.TRANSPARENT);
089        btnClear.setShadow(0);
090        btnClear.setCircle(true);
091        btnClear.setTextColor(Color.WHITE);
092        btnClear.addStyleName(AddinsCssName.PH);
093        btnClear.setIconType(IconType.CLEAR);
094        btnClear.setDataAttribute("data-dz-remove", "");
095        secondaryAction.add(btnClear);
096        item.add(secondaryAction);
097    }
098
099    public MaterialCollectionItem getItem() {
100        return item;
101    }
102
103    public MaterialWidget getDropInfo() {
104        return dropInfo;
105    }
106
107    public MaterialWidget getNameWrapper() {
108        return nameWrapper;
109    }
110
111    public MaterialWidget getErrorWrapper() {
112        return errorWrapper;
113    }
114
115    public Span getName() {
116        return name;
117    }
118
119    public Span getSize() {
120        return size;
121    }
122
123    public Span getErrorMessage() {
124        return errorMessage;
125    }
126
127    public MaterialCollectionSecondary getSecondaryAction() {
128        return secondaryAction;
129    }
130
131    public MaterialButton getBtnClear() {
132        return btnClear;
133    }
134
135    public MaterialIcon getPreviewIcon() {
136        return previewIcon;
137    }
138
139    public MaterialProgress getProgress() {
140        return progress;
141    }
142}