Example usage for com.google.gwt.i18n.client DateTimeFormat getMediumTimeFormat

List of usage examples for com.google.gwt.i18n.client DateTimeFormat getMediumTimeFormat

Introduction

In this page you can find the example usage for com.google.gwt.i18n.client DateTimeFormat getMediumTimeFormat.

Prototype

@Deprecated
public static DateTimeFormat getMediumTimeFormat() 

Source Link

Document

Retrieve the DateTimeFormat object for medium time format.

Usage

From source file:com.anzsoft.client.ui.ChatWindow.java

License:Open Source License

private DivElement createMessage(final String user, final String message, boolean local) {
    Element element = DOM.createDiv();
    DivElement messageDiv = DivElement.as(element);
    lastMsgID = DOM.createUniqueId();/*from  ww  w.  j ava 2  s.co  m*/
    messageDiv.setId(lastMsgID);
    messageDiv.setClassName("selected-article");

    //create the avatar table
    element = DOM.createTable();
    TableElement avatarTable = TableElement.as(element);
    messageDiv.appendChild(avatarTable);
    avatarTable.setAttribute("hspace", "4");
    avatarTable.setAttribute("cellspacing", "0");
    avatarTable.setAttribute("vspace", "2");
    avatarTable.setAttribute("border", "0");
    avatarTable.setAttribute("align", "left");

    Element tbodyElement = DOM.createTBody();
    avatarTable.appendChild(tbodyElement);

    Element trElement = DOM.createTR();
    tbodyElement.appendChild(trElement);

    Element tdElement = DOM.createTD();
    trElement.appendChild(tdElement);
    tdElement.setAttribute("height", "45");
    tdElement.setAttribute("width", "45");
    tdElement.setAttribute("align", "middle");
    Style style = tdElement.getStyle();
    style.setProperty("border", "1px solid black");
    style.setProperty("background-color", "white");

    Element imgElement = DOM.createImg();
    ImageElement imageElement = ImageElement.as(imgElement);
    tdElement.appendChild(imageElement);
    imageElement.setAttribute("height", "45");
    imageElement.setAttribute("widht", "45");
    XmppVCard vc = null;
    if (local)
        vc = JabberApp.instance().getSelfVCard();
    else
        vc = vcard;
    if (!GXT.isIE && vc != null && !vc.photo().isEmpty())
        imageElement.setSrc("data:image;base64," + vc.photo());
    else
        imageElement.setSrc(JabberApp.instance().getAvatarUrl(jid));

    tdElement = DOM.createTD();
    tdElement.setInnerHTML("&nbsp&nbsp");
    trElement.appendChild(tdElement);

    //create the div for timestamp and nick
    element = DOM.createDiv();
    DivElement tnDiv = DivElement.as(element);
    tnDiv.setClassName("msg_header");
    messageDiv.appendChild(tnDiv);
    //style = tnDiv.getStyle();
    //style.setProperty("border-bottom", "1px solid black");

    element = DOM.createTable();
    TableElement tnTableElement = TableElement.as(element);
    tnDiv.appendChild(tnTableElement);
    tnTableElement.setAttribute("cellspacing", "0");
    tnTableElement.setAttribute("cellpadding", "0");
    tnTableElement.setAttribute("width", "80%");
    tnTableElement.setAttribute("border", "0");

    tbodyElement = DOM.createTBody();
    tnTableElement.appendChild(tbodyElement);

    trElement = DOM.createTR();
    tbodyElement.appendChild(trElement);

    Element nickElement = DOM.createTD();
    trElement.appendChild(nickElement);
    nickElement.setClassName("msg-nick");
    nickElement.setAttribute("valign", "bottom");
    nickElement.setAttribute("align", "left");
    nickElement.setInnerHTML("<b>" + user + "</b>");

    Element timeElement = DOM.createTD();
    trElement.appendChild(timeElement);
    timeElement.setClassName("msg-nick");
    timeElement.setAttribute("valign", "bottom");
    timeElement.setAttribute("align", "right");
    DateTimeFormat timeFormat = DateTimeFormat.getMediumTimeFormat();
    String datetime = timeFormat.format(new java.util.Date());
    timeElement.setInnerHTML("<small>" + datetime + "</small>");

    Element messageElement = DOM.createSpan();
    messageElement.setInnerHTML(ChatTextFormatter.format(message == null ? "" : message).getHTML());

    messageDiv.appendChild(messageElement);
    return messageDiv;
}

From source file:com.example.querybuilder.client.TableTreeGridPanel.java

License:Open Source License

public TableTreeGridPanel() {
    setHeading("Tables");
    setIcon(Resources.FOLDER_TABLE);
    setBodyBorder(true); // ContentPanel inside TabItem requires removing top border, see onRender
    setLayout(new FitLayout());

    List<ColumnConfig> columnConfigs = new LinkedList<ColumnConfig>();

    ColumnConfig nameColumnConfig = new ColumnConfig(Keys.NAME, "Name", 100);
    nameColumnConfig.setRenderer(new TreeGridCellRenderer<ModelData>());
    columnConfigs.add(nameColumnConfig);

    ColumnConfig rowCountColumnConfig = new ColumnConfig(Keys.ROW_COUNT, "Rows", 65);
    rowCountColumnConfig.setAlignment(HorizontalAlignment.RIGHT);
    columnConfigs.add(rowCountColumnConfig);

    ColumnConfig columnCountColumnConfig = new ColumnConfig(Keys.COLUMN_COUNT, "Columns", 65);
    columnCountColumnConfig.setAlignment(HorizontalAlignment.RIGHT);
    columnConfigs.add(columnCountColumnConfig);

    ColumnConfig dateColumnConfig = new ColumnConfig(Keys.DATE, "Date", 75);
    dateColumnConfig.setAlignment(HorizontalAlignment.RIGHT);
    dateColumnConfig.setDateTimeFormat(DateTimeFormat.getShortDateFormat());
    columnConfigs.add(dateColumnConfig);

    ColumnConfig timeColumnConfig = new ColumnConfig(Keys.DATE, "Time", 75);
    timeColumnConfig.setAlignment(HorizontalAlignment.RIGHT);
    timeColumnConfig.setDateTimeFormat(DateTimeFormat.getMediumTimeFormat());
    columnConfigs.add(timeColumnConfig);

    ColumnModel columnModel = new ColumnModel(columnConfigs);

    tableTreeStore = new MergeTreeStore(Keys.NAME, Keys.NODE_TYPE);
    tableTreeStore.setMonitorChanges(true);

    tableTreeGrid = new ExtendedTreeGrid(tableTreeStore, columnModel);
    tableTreeGrid.setIconProvider(NodeTypeIconProvider.getInstance());
    tableTreeGrid.setAutoExpand(true);/*w w  w.j a  v a 2  s . c o  m*/
    tableTreeGrid.setAutoExpandColumn(Keys.NAME);
    tableTreeGrid.setAutoExpandMin(100);
    tableTreeGrid.setBorders(false);
    tableTreeGrid.getSelectionModel().addSelectionChangedListener(new TableTreeGridSelectionChangedListener());
    tableTreeGrid.addListener(Events.OnDoubleClick, new TableTreeGridDoubleClickListener());
    new TableTreeGridDragSource(tableTreeGrid);

    add(tableTreeGrid);

    ToolBar toolBar = createToolBar();
    setBottomComponent(toolBar);

    QueryBuilderServiceBus.addServiceProvider(new TableTreeGridPanelServiceProvider());
}

From source file:com.google.gwt.sample.i18n.client.DateTimeFormatExampleController.java

License:Apache License

@Override
protected String doGetPattern(String patternKey) {
    // Date + Time
    if ("fullDateTime".equals(patternKey)) {
        return DateTimeFormat.getFullDateTimeFormat().getPattern();
    }//  ww  w .j  a v  a  2 s  . co m

    if ("longDateTime".equals(patternKey)) {
        return DateTimeFormat.getLongDateTimeFormat().getPattern();
    }

    if ("mediumDateTime".equals(patternKey)) {
        return DateTimeFormat.getMediumDateTimeFormat().getPattern();
    }

    if ("shortDateTime".equals(patternKey)) {
        return DateTimeFormat.getShortDateTimeFormat().getPattern();
    }

    // Date only
    if ("fullDate".equals(patternKey)) {
        return DateTimeFormat.getFullDateFormat().getPattern();
    }

    if ("longDate".equals(patternKey)) {
        return DateTimeFormat.getLongDateFormat().getPattern();
    }

    if ("mediumDate".equals(patternKey)) {
        return DateTimeFormat.getMediumDateFormat().getPattern();
    }

    if ("shortDate".equals(patternKey)) {
        return DateTimeFormat.getShortDateFormat().getPattern();
    }

    // Time only
    if ("fullTime".equals(patternKey)) {
        return DateTimeFormat.getFullTimeFormat().getPattern();
    }

    if ("longTime".equals(patternKey)) {
        return DateTimeFormat.getLongTimeFormat().getPattern();
    }

    if ("mediumTime".equals(patternKey)) {
        return DateTimeFormat.getMediumTimeFormat().getPattern();
    }

    if ("shortTime".equals(patternKey)) {
        return DateTimeFormat.getShortTimeFormat().getPattern();
    }

    throw new IllegalArgumentException("Unknown pattern key '" + patternKey + "'");
}

From source file:eolus.client.EolusUI.java

License:EUPL

void refreshTime() {
    RootPanel.get("time").getElement().setInnerHTML(DateTimeFormat.getMediumTimeFormat().format(new Date()));
}

From source file:java.text.DateFormat.java

License:Apache License

public final static DateFormat getTimeInstance() {
    return new SimpleDateFormat(DateTimeFormat.getMediumTimeFormat());
}

From source file:net.s17fabu.vip.gwt.showcase.client.content.i18n.CwDateTimeFormat.java

License:Apache License

/**
 * Update the selected pattern based on the pattern in the list.
 *///  w  ww .jav  a2s .c  o  m
private void updatePattern() {
    switch (patternList.getSelectedIndex()) {
    // Date + Time
    case 0:
        activeFormat = DateTimeFormat.getFullDateTimeFormat();
        patternBox.setText(activeFormat.getPattern());
        patternBox.setEnabled(false);
        break;

    case 1:
        activeFormat = DateTimeFormat.getLongDateTimeFormat();
        patternBox.setText(activeFormat.getPattern());
        patternBox.setEnabled(false);
        break;
    case 2:
        activeFormat = DateTimeFormat.getMediumDateTimeFormat();
        patternBox.setText(activeFormat.getPattern());
        patternBox.setEnabled(false);
        break;
    case 3:
        activeFormat = DateTimeFormat.getShortDateTimeFormat();
        patternBox.setText(activeFormat.getPattern());
        patternBox.setEnabled(false);
        break;

    // Date only
    case 4:
        activeFormat = DateTimeFormat.getFullDateFormat();
        patternBox.setText(activeFormat.getPattern());
        patternBox.setEnabled(false);
        break;

    case 5:
        activeFormat = DateTimeFormat.getLongDateFormat();
        patternBox.setText(activeFormat.getPattern());
        patternBox.setEnabled(false);
        break;
    case 6:
        activeFormat = DateTimeFormat.getMediumDateFormat();
        patternBox.setText(activeFormat.getPattern());
        patternBox.setEnabled(false);
        break;
    case 7:
        activeFormat = DateTimeFormat.getShortDateFormat();
        patternBox.setText(activeFormat.getPattern());
        patternBox.setEnabled(false);
        break;

    // Time only
    case 8:
        activeFormat = DateTimeFormat.getFullTimeFormat();
        patternBox.setText(activeFormat.getPattern());
        patternBox.setEnabled(false);
        break;

    case 9:
        activeFormat = DateTimeFormat.getLongTimeFormat();
        patternBox.setText(activeFormat.getPattern());
        patternBox.setEnabled(false);
        break;
    case 10:
        activeFormat = DateTimeFormat.getMediumTimeFormat();
        patternBox.setText(activeFormat.getPattern());
        patternBox.setEnabled(false);
        break;
    case 11:
        activeFormat = DateTimeFormat.getShortTimeFormat();
        patternBox.setText(activeFormat.getPattern());
        patternBox.setEnabled(false);
        break;

    // Custom
    case 12:
        patternBox.setEnabled(true);
        String pattern = patternBox.getText();
        try {
            activeFormat = DateTimeFormat.getFormat(pattern);
        } catch (IllegalArgumentException e) {
            showErrorMessage(constants.cwDateTimeFormatInvalidPattern());
            return;
        }
        break;
    }

    // Update the formatted value
    updateFormattedValue();
}

From source file:org.sigmah.client.page.orgunit.reports.OrgUnitReportsView.java

License:Open Source License

public void setReport(final ProjectReportDTO report) {
    mainPanel.removeAll();//from   ww w .j a  va2  s  .c  o m
    // currentReport = report;

    if (autoSaveTimer != null) {
        autoSaveTimer.cancel();
        autoSaveTimer = null;
    }

    if (report == null)
        return;

    // Preparing the view for the new report
    textAreas.clear();
    oldContents.clear();
    keyQuestionState.clear();

    // Title bar
    final ContentPanel reportPanel = new ContentPanel(new FitLayout());
    reportPanel.setScrollMode(Scroll.AUTOY);
    reportPanel.setHeading(report.getName());

    final ToolButton closeButton = new ToolButton("x-tool-close");
    closeButton.addListener(Events.Select, new Listener<BaseEvent>() {

        @Override
        public void handleEvent(BaseEvent be) {
            final OrgUnitState state = new OrgUnitState(currentState.getOrgUnitId());
            state.setCurrentSection(currentState.getCurrentSection());
            state.setArgument("-1");

            eventBus.fireEvent(new NavigationEvent(NavigationHandler.NavigationRequested, state, null));
        }
    });
    reportPanel.getHeader().addTool(closeButton);

    // Report container
    final FlowPanel flowPanel = new FlowPanel();

    // Report
    final FoldPanel root = new FoldPanel();
    root.addStyleName("project-report");

    final List<ProjectReportSectionDTO> sections = report.getSections();

    final StringBuilder prefix = new StringBuilder();

    for (int index = 0; index < sections.size(); index++) {
        final ProjectReportSectionDTO section = sections.get(index);

        prefix.append(index + 1).append('.');
        displaySection(section, root, prefix, 1, report.isDraft());

        prefix.setLength(0);
    }

    // Toolbar
    final ToolBar toolBar = new ToolBar();

    final IconImageBundle icons = GWT.create(IconImageBundle.class);

    if (report.isDraft()) {
        // Draft banner
        final HorizontalPanel header = new HorizontalPanel();
        header.addStyleName("project-report-draft");

        // The "Personal Draft"
        final Label personalDraft = new Label(I18N.MESSAGES.personalDraft());
        personalDraft.addStyleName("project-report-personalDraft");

        final DateTimeFormat dateFormat = DateTimeFormat.getMediumDateFormat();
        final DateTimeFormat timeFormat = DateTimeFormat.getMediumTimeFormat();

        // The label showing the last changed time
        final Label draftLastChangedTime = new Label(I18N.MESSAGES.reportDraftLastChanged(
                dateFormat.format(report.getLastEditDate()), timeFormat.format(report.getLastEditDate())));

        // Add the two labels
        header.add(personalDraft);
        header.add(draftLastChangedTime);

        final Button cancelButton = new Button(I18N.CONSTANTS.delete());
        final Button sendButton = new Button(I18N.CONSTANTS.sendReportDraft());

        cancelButton.addSelectionListener(new SelectionListener<ButtonEvent>() {

            @Override
            public void componentSelected(ButtonEvent ce) {
                final RemoveProjectReportDraft removeDraft = new RemoveProjectReportDraft(
                        report.getVersionId());
                final GetProjectReport getReport = new GetProjectReport(report.getId());

                final AsyncCallback<VoidResult> callback = AsyncCallbacks.emptyCallback();
                dispatcher.execute(removeDraft, null, callback);
                dispatcher.execute(getReport, null, new AsyncCallback<ProjectReportDTO>() {

                    @Override
                    public void onFailure(Throwable caught) {
                        MessageBox.alert(I18N.CONSTANTS.projectTabReports(), I18N.CONSTANTS.reportEditError(),
                                null);
                    }

                    @Override
                    public void onSuccess(ProjectReportDTO result) {
                        Notification.show(I18N.CONSTANTS.projectTabReports(),
                                I18N.CONSTANTS.reportEditCancelSuccess());
                        setReport(result);
                    }

                });
            }
        });

        sendButton.addSelectionListener(new SelectionListener<ButtonEvent>() {

            @Override
            public void componentSelected(ButtonEvent ce) {
                final HashMap<String, Object> changes = new HashMap<String, Object>();
                changes.put("currentPhase", phaseName);

                for (final Map.Entry<Integer, RichTextArea> entry : textAreas.entrySet())
                    changes.put(entry.getKey().toString(), entry.getValue().getHTML());

                final UpdateEntity updateEntity = new UpdateEntity("ProjectReport", report.getVersionId(),
                        changes);
                final PromoteProjectReportDraft promoteDraft = new PromoteProjectReportDraft(report.getId(),
                        report.getVersionId());

                final AsyncCallback<VoidResult> callback = AsyncCallbacks.emptyCallback();
                dispatcher.execute(updateEntity, null, callback);
                dispatcher.execute(promoteDraft, null, new AsyncCallback<ProjectReportDTO>() {

                    @Override
                    public void onFailure(Throwable caught) {
                        MessageBox.alert(I18N.CONSTANTS.projectTabReports(), I18N.CONSTANTS.reportSaveError(),
                                null);
                    }

                    @Override
                    public void onSuccess(ProjectReportDTO result) {
                        Notification.show(I18N.CONSTANTS.projectTabReports(),
                                I18N.CONSTANTS.reportSaveSuccess());
                        setReport(result);
                    }

                });
            }
        });

        final HorizontalPanel buttons = new HorizontalPanel();
        buttons.setSpacing(5);
        buttons.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
        buttons.addStyleName("project-report-draft-button");
        buttons.add(cancelButton);
        buttons.add(sendButton);

        header.add(buttons);
        header.setCellHorizontalAlignment(buttons, HasHorizontalAlignment.ALIGN_RIGHT);

        flowPanel.add(header);

        // Save action
        final Listener<BaseEvent> saveListener = new Listener<BaseEvent>() {

            @Override
            public void handleEvent(BaseEvent be) {
                final HashMap<String, String> changes = new HashMap<String, String>();

                changes.put("currentPhase", phaseName);

                for (final Map.Entry<Integer, RichTextArea> entry : textAreas.entrySet())
                    changes.put(entry.getKey().toString(), entry.getValue().getHTML());

                final UpdateEntity updateEntity = new UpdateEntity("ProjectReport", report.getVersionId(),
                        (Map<String, Object>) (Map<String, ?>) changes);
                dispatcher.execute(updateEntity, null, new AsyncCallback<VoidResult>() {

                    @Override
                    public void onFailure(Throwable caught) {
                        MessageBox.alert(I18N.CONSTANTS.projectTabReports(), I18N.CONSTANTS.reportSaveError(),
                                null);
                    }

                    @Override
                    public void onSuccess(VoidResult result) {
                        Notification.show(I18N.CONSTANTS.projectTabReports(),
                                I18N.CONSTANTS.reportSaveSuccess());

                        final Date now = new Date();
                        header.clear();
                        draftLastChangedTime.setText(I18N.MESSAGES
                                .reportDraftLastChanged(dateFormat.format(now), timeFormat.format(now)));
                        personalDraft.setText(I18N.MESSAGES.personalDraft());
                        header.add(personalDraft);
                        header.add(draftLastChangedTime);
                        header.add(buttons);

                        boolean found = false;
                        for (int index = 0; !found && index < store.getCount(); index++) {
                            final ReportReference reference = store.getAt(index);

                            if (reference.getId().equals(report.getId())) {
                                store.remove(reference);

                                reference.setEditorName(authentication.getUserShortName());
                                reference.setPhaseName(phaseName);
                                reference.setLastEditDate(new Date());

                                store.add(reference);

                                found = true;
                            }
                        }

                        updateChanges();

                        autoSaveTimer.cancel();
                        autoSaveTimer.schedule(AUTO_SAVE_PERIOD);
                    }
                });
            }
        };

        // Save button
        final Button saveButton = new Button(I18N.CONSTANTS.save(), icons.save());
        saveButton.addListener(Events.Select, saveListener);

        toolBar.add(saveButton);
        toolBar.add(new SeparatorToolItem());

        // Auto save timer
        autoSaveTimer = new Timer() {

            @Override
            public void run() {
                saveListener.handleEvent(null);
            }
        };
        autoSaveTimer.schedule(AUTO_SAVE_PERIOD);

    } else {
        final Button editReportButton = new Button(I18N.CONSTANTS.edit(), icons.editPage());

        if (ProfileUtils.isGranted(authentication, GlobalPermissionEnum.MANAGE_UNIT)) {
            toolBar.add(editReportButton);
        }

        editReportButton.addSelectionListener(new SelectionListener<ButtonEvent>() {

            @Override
            public void componentSelected(ButtonEvent ce) {
                // Draft creation
                final HashMap<String, Object> properties = new HashMap<String, Object>();
                properties.put("reportId", report.getId());
                properties.put("phaseName", phaseName);
                final CreateEntity createDraft = new CreateEntity("ProjectReportDraft", properties);

                // Retrieving the new draft
                final GetProjectReport getReportDraft = new GetProjectReport(report.getId());

                final AsyncCallback<CreateResult> callback = AsyncCallbacks.emptyCallback();
                dispatcher.execute(createDraft, null, callback);
                dispatcher.execute(getReportDraft, null, new AsyncCallback<ProjectReportDTO>() {

                    @Override
                    public void onFailure(Throwable caught) {
                        MessageBox.alert(I18N.CONSTANTS.projectTabReports(), I18N.CONSTANTS.reportEditError(),
                                null);
                    }

                    @Override
                    public void onSuccess(ProjectReportDTO result) {
                        setReport(result);
                    }

                });
            }
        });

        final Button exportReportButton = new Button(I18N.CONSTANTS.exportToWord(), icons.msword());
        toolBar.add(exportReportButton);

        exportReportButton.addSelectionListener(new SelectionListener<ButtonEvent>() {

            @Override
            public void componentSelected(ButtonEvent ce) {
                final FormElement form = FormElement.as(DOM.createForm());
                form.setAction(GWT.getModuleBaseURL() + "export");
                form.setTarget("_downloadFrame");
                form.setMethod("POST");

                final InputElement typeField = InputElement.as(DOM.createInputText());
                typeField.setAttribute("type", "hidden");
                typeField.setName(ExportUtils.PARAM_EXPORT_TYPE);
                typeField.setValue(ExportUtils.ExportType.PROJECT_REPORT.toString());
                form.appendChild(typeField);

                final InputElement formatField = InputElement.as(DOM.createInputText());
                formatField.setAttribute("type", "hidden");
                formatField.setName(ExportUtils.PARAM_EXPORT_FORMAT);
                formatField.setValue(ExportUtils.ExportFormat.MS_WORD.name());
                form.appendChild(formatField);

                final InputElement idField = InputElement.as(DOM.createInputText());
                idField.setAttribute("type", "hidden");
                idField.setName(ExportUtils.PARAM_EXPORT_PROJECT_ID);
                idField.setAttribute("value", report.getId().toString());
                form.appendChild(idField);

                RootPanel.getBodyElement().appendChild(form);

                form.submit();
                form.removeFromParent();
            }
        });

        toolBar.add(new SeparatorToolItem());
    }

    // Key question info
    final Label keyQuestionLabel = keyQuestionState.getLabel();
    toolBar.add(keyQuestionLabel);
    toolBar.add(new SeparatorToolItem());

    // Overview mode
    final Button foldButton = new Button(I18N.CONSTANTS.reportOverviewMode());
    foldButton.addListener(Events.Select, new Listener<BaseEvent>() {

        @Override
        public void handleEvent(BaseEvent be) {
            root.expand(true);
            root.fold(true);
        }
    });
    // Expanded mode
    final Button expandButton = new Button(I18N.CONSTANTS.reportFullMode());
    expandButton.addListener(Events.Select, new Listener<BaseEvent>() {

        @Override
        public void handleEvent(BaseEvent be) {
            root.expand(true);
        }
    });

    toolBar.add(foldButton);
    toolBar.add(expandButton);

    if (report.isDraft()) {
        toolBar.add(new SeparatorToolItem());
        createRichTextToolbar(toolBar);
    }

    flowPanel.add(root);
    reportPanel.add(flowPanel);
    reportPanel.setTopComponent(toolBar);

    // Display
    mainPanel.add(reportPanel, new BorderLayoutData(LayoutRegion.CENTER));
    mainPanel.layout();

    mainPanel.unmask();
}

From source file:org.sigmah.client.page.project.reports.ProjectReportsView.java

License:Open Source License

public void setReport(final ProjectReportDTO report) {
    mainPanel.removeAll();/*from w ww.  j av  a2s .  c om*/
    // currentReport = report;

    if (autoSaveTimer != null) {
        autoSaveTimer.cancel();
        autoSaveTimer = null;
    }

    if (report == null) {
        currentReportId = -1;
        return;
    }

    currentReportId = report.getId();

    // Preparing the view for the new report
    textAreas.clear();
    oldContents.clear();
    keyQuestionState.clear();

    // Title bar
    final ContentPanel reportPanel = new ContentPanel(new FitLayout());
    reportPanel.setScrollMode(Scroll.AUTOY);
    reportPanel.setHeading(report.getName());

    final ToolButton closeButton = new ToolButton("x-tool-close");
    closeButton.addListener(Events.Select, new Listener<BaseEvent>() {

        @Override
        public void handleEvent(BaseEvent be) {
            final ProjectState state = new ProjectState(currentState.getProjectId());
            state.setCurrentSection(currentState.getCurrentSection());
            state.setArgument("-1");

            eventBus.fireEvent(new NavigationEvent(NavigationHandler.NavigationRequested, state, null));
        }
    });
    reportPanel.getHeader().addTool(closeButton);

    // Report container
    final FlowPanel flowPanel = new FlowPanel();

    // Report
    final FoldPanel root = new FoldPanel();
    root.addStyleName("project-report");

    final List<ProjectReportSectionDTO> sections = report.getSections();

    final StringBuilder prefix = new StringBuilder();

    for (int index = 0; index < sections.size(); index++) {
        final ProjectReportSectionDTO section = sections.get(index);

        prefix.append(index + 1).append('.');
        displaySection(section, root, prefix, 1, report.isDraft());

        prefix.setLength(0);
    }

    // Toolbar
    final ToolBar toolBar = new ToolBar();

    final IconImageBundle icons = GWT.create(IconImageBundle.class);

    if (report.isDraft()) {
        // Draft banner
        final HorizontalPanel header = new HorizontalPanel();
        header.addStyleName("project-report-draft");

        // The "Personal Draft"
        final Label personalDraft = new Label(I18N.MESSAGES.personalDraft());
        personalDraft.addStyleName("project-report-personalDraft");

        final DateTimeFormat dateFormat = DateTimeFormat.getMediumDateFormat();
        final DateTimeFormat timeFormat = DateTimeFormat.getMediumTimeFormat();

        // The label showing the last changed time
        final Label draftLastChangedTime = new Label(I18N.MESSAGES.reportDraftLastChanged(
                dateFormat.format(report.getLastEditDate()), timeFormat.format(report.getLastEditDate())));

        // Add the two labels
        header.add(personalDraft);
        header.add(draftLastChangedTime);

        final Button cancelButton = new Button(I18N.CONSTANTS.delete());
        final Button sendButton = new Button(I18N.CONSTANTS.sendReportDraft());

        cancelButton.addSelectionListener(new SelectionListener<ButtonEvent>() {

            @Override
            public void componentSelected(ButtonEvent ce) {
                final RemoveProjectReportDraft removeDraft = new RemoveProjectReportDraft(
                        report.getVersionId());
                final GetProjectReport getReport = new GetProjectReport(report.getId());

                final AsyncCallback<VoidResult> callback = AsyncCallbacks.emptyCallback();
                dispatcher.execute(removeDraft, null, callback);
                dispatcher.execute(getReport, null, new AsyncCallback<ProjectReportDTO>() {

                    @Override
                    public void onFailure(Throwable caught) {
                        MessageBox.alert(I18N.CONSTANTS.projectTabReports(), I18N.CONSTANTS.reportEditError(),
                                null);
                    }

                    @Override
                    public void onSuccess(ProjectReportDTO result) {
                        Notification.show(I18N.CONSTANTS.projectTabReports(),
                                I18N.CONSTANTS.reportEditCancelSuccess());
                        setReport(result);
                    }

                });
            }
        });

        sendButton.addSelectionListener(new SelectionListener<ButtonEvent>() {

            @Override
            public void componentSelected(ButtonEvent ce) {
                final HashMap<String, Object> changes = new HashMap<String, Object>();
                changes.put("currentPhase", phaseName);

                for (final Map.Entry<Integer, RichTextArea> entry : textAreas.entrySet())
                    changes.put(entry.getKey().toString(), entry.getValue().getHTML());

                final UpdateEntity updateEntity = new UpdateEntity("ProjectReport", report.getVersionId(),
                        changes);
                final PromoteProjectReportDraft promoteDraft = new PromoteProjectReportDraft(report.getId(),
                        report.getVersionId());

                final AsyncCallback<VoidResult> callback = AsyncCallbacks.emptyCallback();
                dispatcher.execute(updateEntity, null, callback);
                dispatcher.execute(promoteDraft, null, new AsyncCallback<ProjectReportDTO>() {

                    @Override
                    public void onFailure(Throwable caught) {
                        MessageBox.alert(I18N.CONSTANTS.projectTabReports(), I18N.CONSTANTS.reportSaveError(),
                                null);
                    }

                    @Override
                    public void onSuccess(ProjectReportDTO result) {
                        Notification.show(I18N.CONSTANTS.projectTabReports(),
                                I18N.CONSTANTS.reportSaveSuccess());
                        setReport(result);
                    }

                });
            }
        });

        final HorizontalPanel buttons = new HorizontalPanel();
        buttons.setSpacing(5);
        buttons.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
        buttons.addStyleName("project-report-draft-button");
        buttons.add(cancelButton);
        buttons.add(sendButton);

        header.add(buttons);
        header.setCellHorizontalAlignment(buttons, HasHorizontalAlignment.ALIGN_RIGHT);

        flowPanel.add(header);

        // Save action
        final Listener<BaseEvent> saveListener = new Listener<BaseEvent>() {

            @Override
            public void handleEvent(BaseEvent be) {
                final HashMap<String, String> changes = new HashMap<String, String>();

                changes.put("currentPhase", phaseName);

                for (final Map.Entry<Integer, RichTextArea> entry : textAreas.entrySet())
                    changes.put(entry.getKey().toString(), entry.getValue().getHTML());

                final UpdateEntity updateEntity = new UpdateEntity("ProjectReport", report.getVersionId(),
                        (Map<String, Object>) (Map<String, ?>) changes);
                dispatcher.execute(updateEntity, null, new AsyncCallback<VoidResult>() {

                    @Override
                    public void onFailure(Throwable caught) {
                        MessageBox.alert(I18N.CONSTANTS.projectTabReports(), I18N.CONSTANTS.reportSaveError(),
                                null);
                    }

                    @Override
                    public void onSuccess(VoidResult result) {
                        Notification.show(I18N.CONSTANTS.projectTabReports(),
                                I18N.CONSTANTS.reportSaveSuccess());

                        final Date now = new Date();
                        header.clear();
                        draftLastChangedTime.setText(I18N.MESSAGES
                                .reportDraftLastChanged(dateFormat.format(now), timeFormat.format(now)));
                        personalDraft.setText(I18N.MESSAGES.personalDraft());
                        header.add(personalDraft);
                        header.add(draftLastChangedTime);
                        header.add(buttons);

                        boolean found = false;
                        for (int index = 0; !found && index < store.getCount(); index++) {
                            final ReportReference reference = store.getAt(index);

                            if (reference.getId().equals(report.getId())) {
                                store.remove(reference);

                                reference.setEditorName(authentication.getUserShortName());
                                reference.setPhaseName(phaseName);
                                reference.setLastEditDate(new Date());

                                store.add(reference);

                                found = true;
                            }
                        }

                        updateChanges();

                        autoSaveTimer.cancel();
                        autoSaveTimer.schedule(AUTO_SAVE_PERIOD);
                    }
                });
            }
        };

        // Save button
        final Button saveButton = new Button(I18N.CONSTANTS.save(), icons.save());
        saveButton.addListener(Events.Select, saveListener);

        toolBar.add(saveButton);
        toolBar.add(new SeparatorToolItem());

        // Auto save timer
        autoSaveTimer = new Timer() {

            @Override
            public void run() {
                saveListener.handleEvent(null);
            }
        };
        autoSaveTimer.schedule(AUTO_SAVE_PERIOD);

    } else {
        final Button editReportButton = new Button(I18N.CONSTANTS.edit(), icons.editPage());

        if (ProfileUtils.isGranted(authentication, GlobalPermissionEnum.EDIT_PROJECT)) {
            toolBar.add(editReportButton);
        }

        editReportButton.addSelectionListener(new SelectionListener<ButtonEvent>() {

            @Override
            public void componentSelected(ButtonEvent ce) {
                // Draft creation
                final HashMap<String, Object> properties = new HashMap<String, Object>();
                properties.put("reportId", report.getId());
                properties.put("phaseName", phaseName);
                final CreateEntity createDraft = new CreateEntity("ProjectReportDraft", properties);

                // Retrieving the new draft
                final GetProjectReport getReportDraft = new GetProjectReport(report.getId());

                final AsyncCallback<CreateResult> callback = AsyncCallbacks.emptyCallback();
                dispatcher.execute(createDraft, null, callback);
                dispatcher.execute(getReportDraft, null, new AsyncCallback<ProjectReportDTO>() {

                    @Override
                    public void onFailure(Throwable caught) {
                        MessageBox.alert(I18N.CONSTANTS.projectTabReports(), I18N.CONSTANTS.reportEditError(),
                                null);
                    }

                    @Override
                    public void onSuccess(ProjectReportDTO result) {
                        setReport(result);
                    }

                });
            }
        });

        final Button exportReportButton = new Button(I18N.CONSTANTS.exportToWord(), icons.msword());
        toolBar.add(exportReportButton);

        exportReportButton.addSelectionListener(new SelectionListener<ButtonEvent>() {

            @Override
            public void componentSelected(ButtonEvent ce) {
                final FormElement form = FormElement.as(DOM.createForm());
                form.setAction(GWT.getModuleBaseURL() + "export");
                form.setTarget("_downloadFrame");
                form.setMethod("POST");

                final InputElement typeField = InputElement.as(DOM.createInputText());
                typeField.setAttribute("type", "hidden");
                typeField.setName(ExportUtils.PARAM_EXPORT_TYPE);
                typeField.setValue(ExportUtils.ExportType.PROJECT_REPORT.toString());
                form.appendChild(typeField);

                final InputElement formatField = InputElement.as(DOM.createInputText());
                formatField.setAttribute("type", "hidden");
                formatField.setName(ExportUtils.PARAM_EXPORT_FORMAT);
                formatField.setValue(ExportUtils.ExportFormat.MS_WORD.name());
                form.appendChild(formatField);

                final InputElement idField = InputElement.as(DOM.createInputText());
                idField.setAttribute("type", "hidden");
                idField.setName(ExportUtils.PARAM_EXPORT_PROJECT_ID);
                idField.setAttribute("value", report.getId().toString());
                form.appendChild(idField);

                RootPanel.getBodyElement().appendChild(form);

                form.submit();
                form.removeFromParent();
            }
        });

        toolBar.add(new SeparatorToolItem());
    }

    // Key question info
    final Label keyQuestionLabel = keyQuestionState.getLabel();
    toolBar.add(keyQuestionLabel);
    toolBar.add(new SeparatorToolItem());

    // Overview mode
    final Button foldButton = new Button(I18N.CONSTANTS.reportOverviewMode());
    foldButton.addListener(Events.Select, new Listener<BaseEvent>() {

        @Override
        public void handleEvent(BaseEvent be) {
            root.expand(true);
            root.fold(true);
        }
    });
    // Expanded mode
    final Button expandButton = new Button(I18N.CONSTANTS.reportFullMode());
    expandButton.addListener(Events.Select, new Listener<BaseEvent>() {

        @Override
        public void handleEvent(BaseEvent be) {
            root.expand(true);
        }
    });

    toolBar.add(foldButton);
    toolBar.add(expandButton);

    if (report.isDraft()) {
        toolBar.add(new SeparatorToolItem());
        createRichTextToolbar(toolBar);
    }

    flowPanel.add(root);
    reportPanel.add(flowPanel);
    reportPanel.setTopComponent(toolBar);

    // Display
    mainPanel.add(reportPanel, new BorderLayoutData(LayoutRegion.CENTER));
    mainPanel.layout();

    mainPanel.unmask();
}