Example usage for com.jgoodies.forms.layout CellConstraints FILL

List of usage examples for com.jgoodies.forms.layout CellConstraints FILL

Introduction

In this page you can find the example usage for com.jgoodies.forms.layout CellConstraints FILL.

Prototype

Alignment FILL

To view the source code for com.jgoodies.forms.layout CellConstraints FILL.

Click Source Link

Document

Fill the cell either horizontally or vertically.

Usage

From source file:se.streamsource.streamflow.client.ui.administration.surface.AccessPointView.java

License:Apache License

public AccessPointView(@Service ApplicationContext appContext, @Uses final AccessPointModel model,
        @Structure Module module) {/*from w  w w .j a  v  a2s .c om*/
    this.model = model;
    this.labels = module.objectBuilderFactory().newObjectBuilder(CaseLabelsView.class)
            .use(model.getLabelsModel()).newInstance();

    setLayout(new BorderLayout());
    setActionMap(appContext.getActionMap(this));

    RefreshComponents refreshComponents = new RefreshComponents();
    model.addObserver(refreshComponents);

    actionBinder = module.objectBuilderFactory().newObjectBuilder(ActionBinder.class).use(getActionMap())
            .newInstance();
    valueBinder = module.objectBuilderFactory().newObject(ValueBinder.class);
    actionBinder.setResourceMap(appContext.getResourceMap(getClass()));
    LinkValueConverter linkValueConverter = new LinkValueConverter();

    FormLayout layout = new FormLayout("90dlu, 5dlu, 150:grow",
            "pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, "
                    + "pref, 12dlu, pref, 2dlu, pref, 12dlu, pref, 2dlu, default:grow");

    JPanel panel = new JPanel(layout);
    DefaultFormBuilder builder = new DefaultFormBuilder(layout, panel);
    builder.setBorder(Borders.createEmptyBorder(Sizes.DLUY8, Sizes.DLUX4, Sizes.DLUY2, Sizes.DLUX8));

    CellConstraints cc = new CellConstraints();

    MacOsUIWrapper.convertAccelerators(appContext.getActionMap(AccessPointView.class, this));

    selectedProject.setFont(selectedProject.getFont().deriveFont(Font.BOLD));

    selectedCaseType.setFont(selectedCaseType.getFont().deriveFont(Font.BOLD));

    selectedForm.setFont(selectedForm.getFont().deriveFont(Font.BOLD));

    selectedTemplate.getLabel().setFont(selectedTemplate.getLabel().getFont().deriveFont(Font.BOLD));

    ActionMap am = getActionMap();

    // Select project
    javax.swing.Action projectAction = am.get("project");
    projectButton = new StreamflowButton(projectAction);
    projectButton.registerKeyboardAction(projectAction,
            (KeyStroke) projectAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);
    projectButton.setHorizontalAlignment(SwingConstants.LEFT);

    builder.add(projectButton, cc.xy(1, 1));

    builder.add(valueBinder.bind("project", selectedProject, linkValueConverter), new CellConstraints(3, 1, 1,
            1, CellConstraints.LEFT, CellConstraints.CENTER, new Insets(5, 0, 0, 0)));

    // Select case type
    javax.swing.Action caseTypeAction = am.get("casetype");
    caseTypeButton = new StreamflowButton(caseTypeAction);
    caseTypeButton.registerKeyboardAction(caseTypeAction,
            (KeyStroke) caseTypeAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);
    caseTypeButton.setHorizontalAlignment(SwingConstants.LEFT);

    builder.add(caseTypeButton, cc.xy(1, 3));

    builder.add(valueBinder.bind("caseType", selectedCaseType, linkValueConverter), new CellConstraints(3, 3, 1,
            1, CellConstraints.LEFT, CellConstraints.CENTER, new Insets(5, 0, 0, 0)));

    // Select labels
    javax.swing.Action labelAction = labels.getActionMap().get("addLabel");
    labelButton = new StreamflowButton(labelAction);

    labelButton.registerKeyboardAction(labelAction,
            (KeyStroke) labelAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);

    labelButton.setHorizontalAlignment(SwingConstants.LEFT);

    builder.add(labelButton, cc.xy(1, 5, CellConstraints.FILL, CellConstraints.TOP));

    labels.setPreferredSize(new Dimension(500, 60));
    labels.setTextBold(true);
    labels.setButtonRelation(labelButton);
    builder.add(labels,
            new CellConstraints(3, 5, 1, 1, CellConstraints.LEFT, CellConstraints.TOP, new Insets(5, 0, 0, 0)));

    // Select form
    javax.swing.Action formAction = am.get("form");
    formButton = new StreamflowButton(formAction);

    formButton.registerKeyboardAction(formAction,
            (KeyStroke) formAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);

    formButton.setHorizontalAlignment(SwingConstants.LEFT);

    builder.add(formButton, cc.xy(1, 7, CellConstraints.FILL, CellConstraints.TOP));

    // Open replace selection field value editor
    javax.swing.Action replaceSelectionFieldValueAction = am.get("openReplaceSelectionFieldValueEditor");
    replaceSelectionFieldValueEditButton = new StreamflowButton(replaceSelectionFieldValueAction);

    /*replaceSelectionFieldValueEditButton.registerKeyboardAction( replaceSelectionFieldValueAction, (KeyStroke) replaceSelectionFieldValueAction
       .getValue( javax.swing.Action.ACCELERATOR_KEY ),
       JComponent.WHEN_IN_FOCUSED_WINDOW ); */

    replaceSelectionFieldValueEditButton.setHorizontalAlignment(SwingConstants.RIGHT);
    PanelBuilder panelBuilder = new PanelBuilder(new FormLayout("150dlu,5dlu,250:grow", "pref"));
    panelBuilder.add(valueBinder.bind("form", selectedForm, linkValueConverter));
    panelBuilder.nextColumn(2);
    panelBuilder.add(replaceSelectionFieldValueEditButton, new CellConstraints(3, 1, 1, 1,
            CellConstraints.RIGHT, CellConstraints.CENTER, new Insets(0, 0, 0, 0)));
    //panelBuilder.setBorder(BorderFactory.createLineBorder(Color.RED));

    builder.add(panelBuilder.getPanel()/*valueBinder.bind( "form", selectedForm, linkValueConverter )*/,
            new CellConstraints(3, 7, 1, 1, CellConstraints.LEFT, CellConstraints.CENTER,
                    new Insets(5, 0, 0, 0)));

    // Select template
    javax.swing.Action templateAction = am.get("template");
    templateButton = new StreamflowButton(templateAction);

    templateButton.registerKeyboardAction(templateAction,
            (KeyStroke) templateAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);

    templateButton.setHorizontalAlignment(SwingConstants.LEFT);

    builder.add(templateButton, cc.xy(1, 9, CellConstraints.FILL, CellConstraints.TOP));

    builder.add(valueBinder.bind("template", actionBinder.bind("removeTemplate", selectedTemplate)),
            new CellConstraints(3, 9, 1, 1, CellConstraints.LEFT, CellConstraints.CENTER,
                    new Insets(3, 0, 0, 0)));

    builder.add(new JLabel(text(AdministrationResources.cookieExpirationHours)),
            cc.xy(1, 13, CellConstraints.LEFT, CellConstraints.BOTTOM));
    builder.add(
            valueBinder.bind("cookieExpirationHours",
                    actionBinder.bind("changeCookieExpirationHours", cookieExpiration = new JTextField())),
            new CellConstraints(3, 13, 1, 1, CellConstraints.FILL, CellConstraints.BOTTOM,
                    new Insets(3, 0, 0, 0)));

    mailSelectionLabel.setText(text(AdministrationResources.changeMailSelectionMessage));
    mailSelectionLabel.setToolTipText(text(AdministrationResources.changeMailSelectionMessageHint));
    builder.add(mailSelectionLabel, cc.xy(1, 15, CellConstraints.LEFT, CellConstraints.BOTTOM));

    builder.add(
            valueBinder.bind("mailSelectionMessage",
                    actionBinder.bind("changeMailSelectionMessage", mailSelectionField)),
            new CellConstraints(3, 15, 1, 1, CellConstraints.FILL, CellConstraints.BOTTOM,
                    new Insets(3, 0, 0, 0)));

    PanelBuilder signPanel = new PanelBuilder(new FormLayout("180dlu, 15dlu, 180dlu", "default:grow"));
    CellConstraints signPanelCc = new CellConstraints();

    PanelBuilder primarySignPanel = new PanelBuilder(new FormLayout("180dlu",
            "pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, default:grow"));
    CellConstraints primaryCc = new CellConstraints();

    primarySignPanel.addSeparator(text(AdministrationResources.signature_1), primaryCc.xy(1, 1));

    primarySignPanel.add(valueBinder.bind("primarysign",
            actionBinder.bind("setSignActive1",
                    signActive1 = new JCheckBox(text(AdministrationResources.active))),
            new ValueBinder.Converter<RequiredSignatureValue, Boolean>() {
                public Boolean toComponent(RequiredSignatureValue value) {
                    return value != null ? value.active().get() : Boolean.FALSE;
                }
            }), primaryCc.xy(1, 3));

    primarySignPanel.addLabel(text(AdministrationResources.name_label), primaryCc.xy(1, 5));

    primarySignPanel.add(
            valueBinder.bind("primarysign", actionBinder.bind("setSignName1", signName1 = new JTextField()),
                    new ValueBinder.Converter<RequiredSignatureValue, String>() {
                        public String toComponent(RequiredSignatureValue value) {
                            return value != null ? value.name().get() : "";
                        }
                    }),
            primaryCc.xy(1, 7));
    refreshComponents.enabledOn("updateprimarysign", signName1);

    primarySignPanel.add(new JLabel(text(AdministrationResources.description_label)), primaryCc.xy(1, 9));

    primarySignPanel.add(valueBinder.bind("primarysign",
            actionBinder.bind("setSignDescription1", signDescription1 = new JTextField()),
            new ValueBinder.Converter<RequiredSignatureValue, String>() {
                public String toComponent(RequiredSignatureValue value) {
                    return value != null ? value.description().get() : "";
                }
            }), primaryCc.xy(1, 11));
    refreshComponents.enabledOn("updateprimarysign", signDescription1);

    signPanel.add(primarySignPanel.getPanel(), signPanelCc.xy(1, 1, CellConstraints.LEFT, CellConstraints.TOP));

    PanelBuilder secondarySignPanel = new PanelBuilder(new FormLayout("180dlu",
            "pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 2dlu, pref, 12dlu, pref, 2dlu, pref, 2dlu, default:grow"));

    CellConstraints secondaryCc = new CellConstraints();

    secondarySignPanel.addSeparator(text(AdministrationResources.signature_2), secondaryCc.xy(1, 1));

    PanelBuilder secondaryOptionsPanel = new PanelBuilder(new FormLayout("70dlu,5dlu,70dlu,pref:grow", "pref"));
    secondaryOptionsPanel.add(valueBinder.bind("secondarysign",
            actionBinder.bind("setSignActive2",
                    signActive2 = new JCheckBox(text(AdministrationResources.active))),
            new ValueBinder.Converter<RequiredSignatureValue, Boolean>() {
                public Boolean toComponent(RequiredSignatureValue value) {
                    return value != null ? value.active().get() : Boolean.FALSE;
                }
            }), secondaryCc.xy(1, 1));
    refreshComponents.enabledOn("updatesecondarysignactive", signActive2);

    secondaryOptionsPanel.add(valueBinder.bind("secondarysign",
            actionBinder.bind("setSecondMandatory",
                    mandatory2 = new JCheckBox(text(AdministrationResources.mandatory))),
            new ValueBinder.Converter<RequiredSignatureValue, Boolean>() {
                public Boolean toComponent(RequiredSignatureValue value) {
                    return value != null ? value.mandatory().get() : Boolean.FALSE;
                }
            }), secondaryCc.xy(3, 1));
    refreshComponents.enabledOn("updatesecondarysign", mandatory2);

    secondarySignPanel.add(secondaryOptionsPanel.getPanel(), secondaryCc.xy(1, 3));

    secondarySignPanel.add(new JLabel(text(AdministrationResources.name_label)), secondaryCc.xy(1, 5));

    secondarySignPanel.add(
            valueBinder.bind("secondarysign", actionBinder.bind("setSignName2", signName2 = new JTextField()),
                    new ValueBinder.Converter<RequiredSignatureValue, String>() {
                        public String toComponent(RequiredSignatureValue value) {
                            return value != null ? value.name().get() : "";
                        }
                    }),
            secondaryCc.xy(1, 7));
    refreshComponents.enabledOn("updatesecondarysign", signName2);

    secondarySignPanel.add(new JLabel(text(AdministrationResources.description_label)), secondaryCc.xy(1, 9));

    secondarySignPanel.add(valueBinder.bind("secondarysign",
            actionBinder.bind("setSignDescription2", signDescription2 = new JTextField()),
            new ValueBinder.Converter<RequiredSignatureValue, String>() {
                public String toComponent(RequiredSignatureValue value) {
                    return value != null ? value.description().get() : "";
                }
            }), secondaryCc.xy(1, 11));
    refreshComponents.enabledOn("updatesecondarysign", signDescription2);

    // Select form
    javax.swing.Action form2Action = am.get("setSecondForm");
    form2Button = new StreamflowButton(form2Action);

    form2Button.registerKeyboardAction(form2Action,
            (KeyStroke) form2Action.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);

    form2Button.setHorizontalAlignment(SwingConstants.LEFT);
    refreshComponents.enabledOn("updatesecondarysign", form2Button);

    PanelBuilder form2ButtonPanel = new PanelBuilder(new FormLayout("70dlu, 5dlu, 150dlu:grow", "pref"));
    CellConstraints form2ButtonPanelCc = new CellConstraints();

    form2ButtonPanel.add(form2Button, form2ButtonPanelCc.xy(1, 1, CellConstraints.FILL, CellConstraints.TOP));

    form2ButtonPanel.add(valueBinder.bind("secondarysign", selectedForm2 = new JLabel(),
            new ValueBinder.Converter<RequiredSignatureValue, String>() {
                public String toComponent(RequiredSignatureValue value) {
                    return value != null ? value.formdescription().get() : "";
                }
            }), form2ButtonPanelCc.xy(3, 1, CellConstraints.LEFT, CellConstraints.CENTER));

    secondarySignPanel.add(form2ButtonPanel.getPanel(), secondaryCc.xy(1, 13));

    secondarySignPanel.add(new JLabel(text(AdministrationResources.question_label)), secondaryCc.xy(1, 17));

    secondarySignPanel.add(valueBinder.bind("secondarysign",
            actionBinder.bind("setQuestion", formQuestion2 = new JTextField()),
            new ValueBinder.Converter<RequiredSignatureValue, String>() {
                public String toComponent(RequiredSignatureValue value) {
                    return value != null ? value.question().get() : "";
                }
            }), secondaryCc.xy(1, 19));
    refreshComponents.enabledOn("updatesecondarysign", formQuestion2);

    signPanel.add(secondarySignPanel.getPanel(),
            signPanelCc.xy(3, 1, CellConstraints.LEFT, CellConstraints.TOP));

    builder.add(signPanel.getPanel(), new CellConstraints(1, 17, 3, 1, CellConstraints.FILL,
            CellConstraints.FILL, new Insets(0, 0, 0, 0)));

    JPanel templatePanel = new JPanel();
    templatePanel.setVisible(false);
    FormLayout templateFormLayout = new FormLayout("75dlu, 5dlu, fill:p:grow", "pref, pref, fill:p:grow, pref");
    DefaultFormBuilder templateFormBuilder = new DefaultFormBuilder(templateFormLayout, templatePanel);
    templateFormBuilder.addSeparator(text(AdministrationResources.emailTemplates));
    templateFormBuilder.nextLine();
    templateFormBuilder.append(text(AdministrationResources.subject),
            valueBinder.bind("subject", actionBinder.bind("changeSubject", subject = new JTextField())));
    templateFormBuilder.nextLine();
    templateFormBuilder.append(new JScrollPane(emailTemplateList));
    templateFormBuilder.append(new JScrollPane(actionBinder.bind("save", emailTemplateText)));
    templateFormBuilder.nextLine();

    emailTemplateList.addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(ListSelectionEvent e) {
            if (!e.getValueIsAdjusting()) {
                if (emailTemplateList.getSelectedIndex() != -1) {
                    emailTemplateText.setText(model.getAccessPointValue().messages().get()
                            .get(emailTemplateList.getSelectedValue()));
                }
            }
        }
    });

    refreshComponents.visibleOn("updatesecondarysign", templatePanel);

    builder.add(templatePanel, new CellConstraints(1, 19, 3, 1, CellConstraints.FILL, CellConstraints.FILL,
            new Insets(0, 0, 0, 0)));
    add(new JScrollPane(panel), BorderLayout.CENTER);

    new RefreshWhenShowing(this, this);
}

From source file:se.streamsource.streamflow.client.ui.administration.templates.SelectedTemplatesView.java

License:Apache License

public SelectedTemplatesView(@Service ApplicationContext appContext, @Uses SelectedTemplatesModel model,
        @Structure Module module) {//from ww  w .j  a  v  a  2s .  c o  m
    this.model = model;
    model.addObserver(this);

    selectedTemplatesBinder = module.objectBuilderFactory().newObject(StateBinder.class);
    selectedTemplatesBinder.addObserver(this);
    selectedTemplatesBinder.addConverter(new StateBinder.Converter() {
        public Object toComponent(Object value) {
            if (value instanceof LinkValue) {
                return ((LinkValue) value).text().get();
            } else
                return value;
        }

        public Object fromComponent(Object value) {
            return value;
        }
    });
    selectedTemplatesBinder.setResourceMap(appContext.getResourceMap(getClass()));
    SelectedTemplatesDTO template = selectedTemplatesBinder.bindingTemplate(SelectedTemplatesDTO.class);

    defaultTemplate.getLabel().setFont(defaultTemplate.getLabel().getFont().deriveFont(Font.BOLD));
    defaultTemplate.setPreferredSize(new Dimension(150, 25));

    formTemplate.getLabel().setFont(formTemplate.getLabel().getFont().deriveFont(Font.BOLD));
    formTemplate.setPreferredSize(new Dimension(150, 25));

    caseTemplate.getLabel().setFont(caseTemplate.getLabel().getFont().deriveFont(Font.BOLD));
    caseTemplate.setPreferredSize(new Dimension(150, 25));

    FormLayout layout = new FormLayout("80dlu, 5dlu, 150:grow",
            "pref, 2dlu, pref, 2dlu, pref, 2dlu, pref:grow");

    JPanel panel = new JPanel(layout);
    DefaultFormBuilder builder = new DefaultFormBuilder(layout, panel);
    builder.setBorder(Borders.createEmptyBorder(Sizes.DLUY8, Sizes.DLUX4, Sizes.DLUY2, Sizes.DLUX8));

    CellConstraints cc = new CellConstraints();

    setActionMap(appContext.getActionMap(this));
    MacOsUIWrapper.convertAccelerators(appContext.getActionMap(SelectedTemplatesView.class, this));

    ActionMap am = getActionMap();

    // Select default template
    javax.swing.Action defaultTemplateAction = am.get("defaultTemplate");
    defaultTemplateButton = new StreamflowButton(defaultTemplateAction);

    defaultTemplateButton.registerKeyboardAction(defaultTemplateAction,
            (KeyStroke) defaultTemplateAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);

    defaultTemplateButton.setHorizontalAlignment(SwingConstants.LEFT);

    builder.add(defaultTemplateButton, cc.xy(1, 3, CellConstraints.FILL, CellConstraints.TOP));

    builder.add(selectedTemplatesBinder.bind(defaultTemplate, template.defaultPdfTemplate()),
            new CellConstraints(3, 3, 1, 1, CellConstraints.LEFT, CellConstraints.TOP, new Insets(3, 0, 0, 0)));

    // Select form template
    javax.swing.Action formTemplateAction = am.get("formTemplate");
    formTemplateButton = new StreamflowButton(formTemplateAction);

    formTemplateButton.registerKeyboardAction(formTemplateAction,
            (KeyStroke) formTemplateAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);

    formTemplateButton.setHorizontalAlignment(SwingConstants.LEFT);

    builder.add(formTemplateButton, cc.xy(1, 5, CellConstraints.FILL, CellConstraints.TOP));

    builder.add(selectedTemplatesBinder.bind(formTemplate, template.formPdfTemplate()),
            new CellConstraints(3, 5, 1, 1, CellConstraints.LEFT, CellConstraints.TOP, new Insets(3, 0, 0, 0)));

    // Select case template
    javax.swing.Action caseTemplateAction = am.get("caseTemplate");
    caseTemplateButton = new StreamflowButton(caseTemplateAction);

    caseTemplateButton.registerKeyboardAction(caseTemplateAction,
            (KeyStroke) caseTemplateAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);

    caseTemplateButton.setHorizontalAlignment(SwingConstants.LEFT);

    builder.add(caseTemplateButton, cc.xy(1, 7, CellConstraints.FILL, CellConstraints.TOP));

    builder.add(selectedTemplatesBinder.bind(caseTemplate, template.casePdfTemplate()),
            new CellConstraints(3, 7, 1, 1, CellConstraints.LEFT, CellConstraints.TOP, new Insets(3, 0, 0, 0)));

    add(panel, BorderLayout.CENTER);

    selectedTemplatesBinder.updateWith(model.getSelectedTemplatesValue());

    new RefreshWhenShowing(this, model);
}

From source file:se.streamsource.streamflow.client.ui.workspace.cases.caselog.CaseLogView.java

License:Apache License

public CaseLogView(@Service final ApplicationContext context, @Uses CaseLogModel logmodel) {
    this.model = logmodel;

    setActionMap(context.getActionMap(this));

    // Load icons
    notPublishedIcon = icon(Icons.not_published, ICON_16);
    publishedIcon = icon(Icons.published, ICON_16);

    // Layout and form for the left panel
    FormLayout rightLayout = new FormLayout("30dlu, 300:grow, 50dlu, 20dlu", "pref, fill:pref:grow, 60dlu");
    setLayout(rightLayout);//  w w  w.  j  a va  2  s. c  om
    setFocusable(false);
    DefaultFormBuilder rightBuilder = new DefaultFormBuilder(rightLayout, this);
    rightBuilder.setBorder(Borders.createEmptyBorder(Sizes.DLUY2, Sizes.DLUX2, Sizes.DLUY2, Sizes.DLUX2));

    JLabel caseLogLabel = new JLabel(i18n.text(WorkspaceResources.case_log));
    rightBuilder.add(caseLogLabel,
            new CellConstraints(1, 1, 2, 1, CellConstraints.LEFT, CellConstraints.TOP, new Insets(0, 0, 0, 0)));
    rightBuilder.nextColumn();

    filtersList = new SelectionList(
            Arrays.asList(system.name(), system_trace.name(), custom.name(), contact.name(), form.name(),
                    conversation.name(), attachment.name()),
            model.getSelectedFilters(), new ValueToLabelConverter() {
                public String convert(String value) {
                    return text(valueOf(value.toString()));
                }
            }, new ListSelectionListener() {

                public void valueChanged(ListSelectionEvent event) {
                    if (!event.getValueIsAdjusting()) {
                        String selectedValue = (String) ((JList) event.getSource()).getSelectedValue();
                        if (selectedValue != null) {
                            if (model.getSelectedFilters().contains(selectedValue)) {
                                model.getSelectedFilters().remove(selectedValue);
                            } else {
                                model.getSelectedFilters().add(selectedValue);
                            }
                            model.refresh();
                            ((JList) event.getSource()).clearSelection();
                        }
                    }
                }
            });

    filterPopupHandler = new StandardPopupHandler(CaseLogView.this, getActionMap().get("filter"),
            Position.right, false, new RefreshHandler() {
                public void refresh() {
                    model.refresh();
                    list.ensureIndexIsVisible(list.getModel().getSize() - 1);
                }
            });
    rightBuilder.add(filterPopupHandler.getButton(), new CellConstraints(3, 1, 1, 1, CellConstraints.RIGHT,
            CellConstraints.TOP, new Insets(0, 0, 0, 0)));

    filtersList.addFocusListener(new FocusAdapter() {
        @Override
        public void focusLost(FocusEvent e) {
            if (e.getOppositeComponent() != null
                    && (e.getOppositeComponent().equals(filterPopupHandler.getButton())))
                filterPopupHandler.kill();
        }
    });

    editButton = new StreamflowToggleButton(getActionMap().get("edit"));
    editButton.setMargin(new Insets(3, 7, 1, 5));
    rightBuilder.add(editButton, new CellConstraints(4, 1, 1, 1, CellConstraints.RIGHT, CellConstraints.TOP,
            new Insets(0, 0, 0, 0)));

    // Caselog
    rightBuilder.nextLine();
    ((JXList) list).addHighlighter(HighlighterFactory.createAlternateStriping());
    list.setModel(new EventListModel<CaseLogEntryDTO>(model.caselogs()));
    list.setCellRenderer(new CaseLogListCellRenderer());
    list.setFixedCellHeight(-1);
    list.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    final JList tmpList = list;
    list.addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent e) {
            if (e.isPopupTrigger()) {
                int index = tmpList.locationToIndex(new Point(e.getX(), e.getY()));
                if (tmpList.getSelectedIndex() != index) {
                    tmpList.setSelectedIndex(index);
                }

                final JPopupMenu menu = new JPopupMenu();
                JMenuItem item = new JMenuItem();
                item.setAction(context.getActionMap().get("copy"));
                item.setIcon(null);
                menu.add(item);

                final int x = e.getX();
                final int y = e.getY();
                final Component c = e.getComponent();
                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        menu.show(c, x, y);
                    }
                });

            }
        }
    });

    scroll = new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    scroll.setMinimumSize(new Dimension(250, 100));
    scroll.setPreferredSize(new Dimension(400, 300));
    rightBuilder.setExtent(3, 1);
    rightBuilder.add(scroll, new CellConstraints(1, 2, 4, 1, CellConstraints.FILL, CellConstraints.FILL,
            new Insets(0, 0, 0, 0)));

    // Add caselog message
    ImageIcon icon = i18n.icon(Icons.message_add, 24);
    rightBuilder.add(new JLabel(icon), new CellConstraints(1, 3, 1, 1, CellConstraints.LEFT,
            CellConstraints.TOP, new Insets(10, 10, 0, 0)));
    newMessageArea = new JTextArea(10, 30);
    newMessageArea.setLineWrap(true);
    newMessageArea.setWrapStyleWord(true);
    newMessagePane = new JScrollPane(newMessageArea);
    newMessagePane.setMinimumSize(new Dimension(10, 10));
    newMessagePane.setPreferredSize(new Dimension(10, 70));
    rightBuilder.add(newMessagePane, new CellConstraints(2, 3, 3, 1, CellConstraints.FILL, CellConstraints.TOP,
            new Insets(10, 0, 0, 0)));

    newMessageArea.addKeyListener(new KeyListener() {
        public void keyTyped(KeyEvent e) {
        }

        public void keyReleased(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                if (!e.isControlDown()) {
                    newMessageArea.setText("");
                }
            }
        }

        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                if (e.isControlDown()) {
                    newMessageArea.append("\n");
                } else {
                    addMessage();
                }
            }
        }
    });

    listSelectionListener = new ListSelectionListener() {

        public void valueChanged(ListSelectionEvent event) {
            if (!event.getValueIsAdjusting()) {
                final CaseLogEntryDTO selectedValue = (CaseLogEntryDTO) ((JList) event.getSource())
                        .getSelectedValue();
                if (selectedValue != null) {
                    new CommandTask() {

                        @Override
                        protected void command() throws Exception {
                            model.togglepublish(selectedValue);
                        }
                    }.execute();
                    ((JList) event.getSource()).clearSelection();
                }
            }
        }
    };

    addHierarchyListener(new HierarchyListener() {
        public void hierarchyChanged(HierarchyEvent e) {
            if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0 && !isShowing() && editMode) {
                editButton.setSelected(false);
                configureComponentsForEdit(false);
            }
        }
    });

    new RefreshWhenShowing(this, this);
}

From source file:se.streamsource.streamflow.client.ui.workspace.cases.general.CaseGeneralView.java

License:Apache License

public CaseGeneralView(@Service ApplicationContext appContext, @Uses CaseGeneralModel generalModel,
        @Uses CaseLogView caseLogView, @Structure Module module) {
    this.appContext = appContext;
    this.model = generalModel;
    RefreshComponents refreshComponents = new RefreshComponents();
    model.addObserver(refreshComponents);
    ObjectBuilderFactory obf = module.objectBuilderFactory();
    this.labels = obf.newObjectBuilder(CaseLabelsView.class).use(generalModel.newLabelsModel()).newInstance();
    this.caseNotes = obf.newObjectBuilder(CaseNoteView.class).use(generalModel.newCaseNoteModel())
            .newInstance();/* ww  w.  java  2 s  .  c  om*/

    RefreshComponents refreshLabelComponents = new RefreshComponents();
    labels.getModel().addObserver(refreshLabelComponents);

    this.forms = obf.newObjectBuilder(PossibleFormsView.class).use(generalModel.newPossibleFormsModel())
            .newInstance();
    refreshComponents.visibleOn("changedescription", forms);
    this.setBorder(BorderFactory.createEmptyBorder());
    getVerticalScrollBar().setUnitIncrement(30);

    setActionMap(appContext.getActionMap(this));
    ActionMap am = getActionMap();
    MacOsUIWrapper.convertAccelerators(appContext.getActionMap(CaseGeneralView.class, this));

    actionBinder = obf.newObjectBuilder(ActionBinder.class).use(am).newInstance();
    valueBinder = obf.newObject(ValueBinder.class);
    actionBinder.setResourceMap(appContext.getResourceMap(getClass()));

    // Layout and form for the right panel
    FormLayout leftLayout = new FormLayout("70dlu, 2dlu, 200:grow, 70dlu",
            "pref, pref, pref, pref, 20dlu, pref, pref, pref, pref");

    leftPane = new JPanel(leftLayout);
    leftPane.setFocusable(false);
    DefaultFormBuilder leftBuilder = new DefaultFormBuilder(leftLayout, leftPane);
    leftBuilder.setBorder(Borders.createEmptyBorder(Sizes.DLUY2, Sizes.DLUX2, Sizes.DLUY2, Sizes.DLUX11));

    selectedCaseType.getLabel().setFont(selectedCaseType.getLabel().getFont().deriveFont(Font.BOLD));
    selectedCaseType.getButton().addActionListener(am.get("removeCaseType"));
    valueBinder.bind("caseType", selectedCaseType);

    // Description & DueDate
    leftBuilder.setExtent(3, 1);
    JLabel descriptionLabel = leftBuilder.getComponentFactory()
            .createLabel(i18n.text(WorkspaceResources.description_label));
    leftBuilder.add(descriptionLabel);
    descriptionLabel.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 0));
    leftBuilder.nextColumn(3);
    JLabel dueOnLabel = leftBuilder.append(i18n.text(WorkspaceResources.due_on_label));
    dueOnLabel.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 0));

    leftBuilder.nextLine();
    leftBuilder.setExtent(3, 1);
    JPanel descPanel = new JPanel(new BorderLayout());
    descPanel.add(valueBinder.bind("description",
            actionBinder.bind("changeDescription", descriptionField = (JTextField) TEXTFIELD.newField())),
            BorderLayout.WEST);
    leftBuilder.add(descPanel);
    descriptionField.setName("txtCaseDescription");
    leftBuilder.add(
            valueBinder.bind("dueOn",
                    actionBinder.bind("changeDueOn", dueOnField = (JXDatePicker) DATEPICKER.newField())),
            new CellConstraints(4, 2, 1, 1, CellConstraints.LEFT, CellConstraints.BOTTOM,
                    new Insets(4, 0, 0, 0)));
    leftBuilder.nextLine();
    descriptionLabel.setLabelFor(descriptionField);
    dueOnLabel.setLabelFor(dueOnField);
    refreshComponents.enabledOn("changedescription", descriptionField);
    refreshComponents.enabledOn("changedueon", dueOnField);

    // Select case type
    javax.swing.Action caseTypeAction = am.get("changeCaseType");
    caseTypeButton = new StreamflowButton(caseTypeAction);
    caseTypeButton.registerKeyboardAction(caseTypeAction,
            (KeyStroke) caseTypeAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);
    caseTypeButton.setHorizontalAlignment(SwingConstants.LEFT);
    refreshComponents.enabledOn("casetype", caseTypeButton, selectedCaseType);

    leftBuilder.add(caseTypeButton,
            new CellConstraints(1, 3, 1, 1, CellConstraints.FILL, CellConstraints.TOP, new Insets(2, 0, 5, 0)));
    leftBuilder.add(selectedCaseType, new CellConstraints(3, 3, 1, 1, CellConstraints.LEFT,
            CellConstraints.BOTTOM, new Insets(5, 5, 0, 0)));

    JLabel priorityLabel = leftBuilder.getComponentFactory()
            .createLabel(i18n.text(WorkspaceResources.priority_label));
    priorityLabel.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 0));

    leftBuilder.add(priorityLabel, new CellConstraints(4, 3, 1, 1, CellConstraints.FILL, CellConstraints.BOTTOM,
            new Insets(4, 0, 0, 0)));

    leftBuilder.nextLine();

    // Select labels
    javax.swing.Action labelAction = labels.getActionMap().get("addLabel");
    labelButton = new StreamflowButton(labelAction);
    // NotificationGlassPane.registerButton(labelButton);
    labelButton.registerKeyboardAction(labelAction,
            (KeyStroke) labelAction.getValue(javax.swing.Action.ACCELERATOR_KEY),
            JComponent.WHEN_IN_FOCUSED_WINDOW);

    labelButton.setHorizontalAlignment(SwingConstants.LEFT);
    labels.setButtonRelation(labelButton);
    refreshLabelComponents.enabledOn("addlabel", labelButton, labels);

    leftBuilder.add(labelButton,
            new CellConstraints(1, 4, 1, 1, CellConstraints.FILL, CellConstraints.TOP, new Insets(5, 0, 0, 0)));

    labels.setPreferredSize(new Dimension(500, 50));
    leftBuilder.add(labels,
            new CellConstraints(3, 4, 1, 1, CellConstraints.LEFT, CellConstraints.TOP, new Insets(5, 0, 0, 0)));

    JPanel prioPanel = new JPanel(new BorderLayout());
    prioPanel.add(valueBinder.bind("priority",
            actionBinder.bind("changePriority", casePriority = (JComboBox) COMBOBOX.newField())));
    leftBuilder.add(prioPanel, new CellConstraints(4, 4, 1, 1, CellConstraints.FILL, CellConstraints.TOP,

            new Insets(2, 0, 0, 0)));

    priorityLabel.setLabelFor(casePriority);
    refreshComponents.visibleOn("changepriority", casePriority, priorityLabel);
    refreshComponents.enabledOn("changepriority", casePriority, priorityLabel);
    casePriority.setRenderer(new DefaultListCellRenderer() {
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
                boolean cellHasFocus) {

            final PriorityValue itemValue = (PriorityValue) value;
            String val = itemValue == null ? "" : itemValue.text().get();

            JPanel panel = new JPanel();
            panel.setOpaque(false);
            FormLayout layout = new FormLayout("10dlu, 60dlu:grow", "pref");
            DefaultFormBuilder formBuilder = new DefaultFormBuilder(layout, panel);

            panel.setBorder(BorderFactory.createEmptyBorder(2, 0, 1, 0));
            JLabel label = new JLabel() {
                @Override
                protected void paintComponent(Graphics g) {
                    Color color = getBackground();
                    if (itemValue != null) {
                        if (!Strings.empty(itemValue.color().get()))
                            color = new Color(parseInt(itemValue.color().get()));
                        else
                            color = Color.BLACK;
                    }
                    final Color FILL_COLOR = ColorUtil.removeAlpha(color);

                    Graphics2D g2 = (Graphics2D) g.create();

                    try {
                        g2.setRenderingHint(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON);
                        g2.setColor(Color.LIGHT_GRAY);
                        final int DIAM = Math.min(getWidth(), getHeight());
                        final int inset = 3;
                        g2.fill(new Ellipse2D.Float(inset, inset, DIAM - 2 * inset, DIAM - 2 * inset));
                        g2.setColor(FILL_COLOR);
                        final int border = 1;
                        g2.fill(new Ellipse2D.Float(inset + border, inset + border,
                                DIAM - 2 * inset - 2 * border, DIAM - 2 * inset - 2 * border));
                    } finally {
                        g2.dispose();
                    }
                }
            };
            label.setPreferredSize(new Dimension(10, 10));
            formBuilder.add((Strings.empty(val) || "-".equals(val)) ? new JLabel() : label, new CellConstraints(
                    1, 1, 1, 1, CellConstraints.FILL, CellConstraints.FILL, new Insets(0, 0, 0, 0)));
            JLabel text = new JLabel(val);
            formBuilder.add(text, new CellConstraints(2, 1, 1, 1, CellConstraints.LEFT, CellConstraints.FILL,
                    new Insets(0, 0, 0, 0)));

            return panel;
        }
    });
    leftBuilder.nextLine();

    leftBuilder.add(caseNotes,
            new CellConstraints(1, 6, 4, 1, CellConstraints.FILL, CellConstraints.TOP, new Insets(0, 2, 5, 0)));

    // Forms
    JLabel formsLabel = new JLabel(i18n.text(WorkspaceResources.forms_label));
    refreshComponents.visibleOn("changedescription", formsLabel);
    leftBuilder.add(formsLabel,
            new CellConstraints(1, 7, 1, 1, CellConstraints.LEFT, CellConstraints.TOP, new Insets(5, 0, 0, 0)));
    leftBuilder.nextLine();

    JPanel formsPanel = new JPanel(new BorderLayout());
    formsPanel.add(forms, BorderLayout.WEST);
    leftBuilder.add(formsPanel, new CellConstraints(1, 8, 3, 1, CellConstraints.FILL, CellConstraints.FILL,
            new Insets(5, 0, 0, 0)));

    // Limit pickable dates to future
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(new Date());
    calendar.add(Calendar.DAY_OF_MONTH, 1);
    dueOnField.getMonthView().setLowerBound(calendar.getTime());

    final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT);
    dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
    dueOnField.getEditor().setFormatterFactory(
            new DefaultFormatterFactory(new DatePickerFormatter(new DateFormat[] { dateFormat }) {
                @Override
                public Object stringToValue(String text) throws ParseException {
                    Object result;
                    try {
                        result = super.stringToValue(text);
                    } catch (ParseException pe) {
                        dialogs.showMessageDialog(dueOnField,
                                text(WorkspaceResources.wrong_format_msg) + " "
                                        + ((SimpleDateFormat) dateFormat).toPattern(),
                                text(WorkspaceResources.wrong_format_title));
                        throw pe;
                    }
                    return result;
                }
            }));

    // Main panel that contains both left and right pane
    JPanel formsContainer = new JPanel();
    formsContainer.setLayout(new GridLayout(1, 2));
    formsContainer.setBorder(Borders.createEmptyBorder("2dlu, 2dlu, 2dlu, 2dlu"));
    formsContainer.add(leftPane);
    formsContainer.add(caseLogView);

    setViewportView(formsContainer);

    setFocusTraversalPolicy(new LayoutFocusTraversalPolicy());
    setFocusCycleRoot(true);
    setFocusable(true);

    new RefreshWhenShowing(this, this);
}

From source file:se.streamsource.streamflow.client.ui.workspace.cases.general.forms.geo.GeoLocationFieldPanel.java

License:Apache License

public GeoLocationFieldPanel(@Service ApplicationContext appContext, @Uses FieldSubmissionDTO field,
        @Uses GeoLocationFieldValue fieldValue, @Uses FormSubmissionWizardPageModel model) {
    super(field);
    this.model = model;
    this.fieldValue = fieldValue;
    this.formDraftSettings = model.getFormDraftModel().settings();

    setActionMap(appContext.getActionMap(this));

    mapViewer = createMapViewer();//from   w  w  w  .j  a va  2 s.  c  o  m
    setMapType(MapType.ROAD_MAP);

    JPanel controlPanel = createControlPanel();

    FormLayout layout = new FormLayout("1dlu, 20dlu:grow, 4dlu, pref", "260dlu");
    setLayout(layout);
    add(mapViewer, new CellConstraints(2, 1, CellConstraints.FILL, CellConstraints.FILL));
    add(controlPanel, new CellConstraints(4, 1, CellConstraints.DEFAULT, CellConstraints.FILL));
}

From source file:se.streamsource.streamflow.client.ui.workspace.cases.general.forms.geo.GeoLocationFieldPanel.java

License:Apache License

private JPanel createControlPanel() {
    JComboBox<MapType> mapTypeSelector = createMapTypeSelector();
    JPanel modeButtonPanel = createModeButtonPanel();
    addressInfoLabel = new JLabel();
    helpHintLabel = new JLabel();

    FormLayout layout = new FormLayout("60dlu", "pref, 4dlu, pref, 4dlu, pref, 4dlu, pref:grow");
    JPanel controlPanel = new JPanel(layout);
    controlPanel.add(mapTypeSelector, new CellConstraints(1, 1));
    controlPanel.add(modeButtonPanel, new CellConstraints(1, 3, CellConstraints.FILL, CellConstraints.DEFAULT));
    controlPanel.add(addressInfoLabel, new CellConstraints(1, 5));
    controlPanel.add(helpHintLabel, new CellConstraints(1, 7, CellConstraints.DEFAULT, CellConstraints.BOTTOM));

    return controlPanel;
}

From source file:se.streamsource.streamflow.client.ui.workspace.cases.note.CaseNoteView.java

License:Apache License

public CaseNoteView(@Service ApplicationContext appContext, @Uses CaseNoteModel model,
        @Structure Module module) {/*w  ww .j a v  a  2  s. co  m*/
    this.model = model;

    setActionMap(appContext.getActionMap(this));
    ActionMap am = getActionMap();

    ObjectBuilderFactory obf = module.objectBuilderFactory();

    FormLayout formLayout = new FormLayout("70dlu, 3dlu, pref, 3dlu, right:70dlu:grow", "pref,120:grow");
    this.setLayout(formLayout);

    DefaultFormBuilder formBuilder = new DefaultFormBuilder(formLayout, this);

    valueBinder = obf.newObject(ValueBinder.class);
    actionBinder = obf.newObjectBuilder(ActionBinder.class).use(am).newInstance();
    actionBinder.setResourceMap(appContext.getResourceMap(this.getClass()));

    formBuilder.append(i18n.text(WorkspaceResources.note_label));

    allNotesBtn = new StreamflowToggleButton(am.get("allNotes"));
    allNotesBtn.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent itemEvent) {
            int state = itemEvent.getStateChange();
            if (state == ItemEvent.SELECTED) {
                showPopup(allNotesBtn);
            } else if (state == ItemEvent.DESELECTED) {
                killPopup();
            }
        }
    });
    formBuilder.nextColumn(2);
    formBuilder.append(allNotesBtn);

    JScrollPane textScroll = null;
    formBuilder.add(
            textScroll = new JScrollPane(
                    valueBinder.bind("note", actionBinder.bind("addNote", note = new JTextPane()))),
            new CellConstraints(1, 2, 5, 1, CellConstraints.FILL, CellConstraints.FILL));
    textScroll.setPreferredSize(new Dimension(210, 120));

    textScroll.getViewport().getView().setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, null);
    textScroll.getViewport().getView().setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,
            null);

    RefreshComponents refreshComponents = new RefreshComponents();
    model.addObserver(refreshComponents);
    refreshComponents.enabledOn("addnote", note);

    new RefreshWhenShowing(this, this);

}

From source file:se.streamsource.streamflow.client.ui.workspace.table.CasesTableView.java

License:Apache License

public void init(final @Service ApplicationContext context, @Uses CasesTableModel casesTableModel,
        final @Uses TableFormat tableFormat, @Optional @Uses JTextField searchField) {
    setLayout(new BorderLayout());

    this.context = context;
    this.model = casesTableModel;
    this.tableFormat = tableFormat;

    ActionMap am = context.getActionMap(CasesTableView.class, this);
    setActionMap(am);/*from   w  w  w  .  ja  v  a  2 s  .c  o m*/
    MacOsUIWrapper.convertAccelerators(context.getActionMap(CasesTableView.class, this));

    // Filter
    filter = module.objectBuilderFactory().newObjectBuilder(PerspectiveView.class).use(model, searchField)
            .newInstance();
    add(filter, BorderLayout.NORTH);

    // Table
    // Trigger creation of filters and table model
    caseTable = new SeparatorTable(null) {
        public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
            Component c = super.prepareRenderer(renderer, row, column);

            //  add custom rendering here
            EventTableModel model = (EventTableModel) getModel();
            if (model.getElementAt(row) instanceof CaseTableValue) {

                Map attributes = c.getFont().getAttributes();
                if (((CaseTableValue) model.getElementAt(row)).removed().get()) {
                    attributes.put(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON);
                } else if (((CaseTableValue) model.getElementAt(row)).unread().get()) {
                    attributes.put(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD);
                }
                c.setFont(new Font(attributes));
            }

            return c;
        }
    };
    caseTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    caseTable.getActionMap().getParent().setParent(am);
    caseTable.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
            KeyboardFocusManager.getCurrentKeyboardFocusManager()
                    .getDefaultFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
    caseTable.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,
            KeyboardFocusManager.getCurrentKeyboardFocusManager()
                    .getDefaultFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS));

    caseTable.getActionMap().remove("column.horizontalScroll");
    caseTable.getActionMap().remove("column.packAll");
    caseTable.getActionMap().remove("column.packSelected");
    caseTable.setColumnControlVisible(true);

    caseTable.setModel(new EventJXTableModel<CaseTableValue>(model.getEventList(), tableFormat));

    model.addObserver(new Observer() {
        public void update(Observable o, Object arg) {
            if (model.getGroupBy() == GroupBy.none) {
                caseTable.setModel(new EventJXTableModel<CaseTableValue>(model.getEventList(), tableFormat));
            } else {
                SeparatorList<CaseTableValue> groupingList = new SeparatorList<CaseTableValue>(
                        model.getEventList(), groupingComparator, 1, 10000);
                caseTable.setModel(new EventJXTableModel<CaseTableValue>(groupingList, tableFormat));
            }

            if (!model.containsCaseWithPriority()) {
                model.addInvisibleColumn(8);
            }

            for (Integer invisibleCol : model.getInvisibleColumns()) {
                TableColumnModelExt tm = (TableColumnModelExt) caseTable.getColumnModel();
                if (tm.getColumnExt(invisibleCol).isVisible())
                    caseTable.getColumnExt(invisibleCol).setVisible(false);
            }

        }
    });

    caseTable.getColumn(0).setPreferredWidth(500);
    caseTable.getColumn(1).setPreferredWidth(70);
    caseTable.getColumn(1).setMaxWidth(70);
    caseTable.getColumn(1).setResizable(false);
    caseTable.getColumn(2).setPreferredWidth(300);
    caseTable.getColumn(2).setMaxWidth(300);
    caseTable.getColumn(3).setPreferredWidth(150);
    caseTable.getColumn(3).setMaxWidth(150);
    caseTable.getColumn(4).setPreferredWidth(90);
    caseTable.getColumn(4).setMaxWidth(90);
    caseTable.getColumn(5).setPreferredWidth(150);
    caseTable.getColumn(5).setMaxWidth(150);
    caseTable.getColumn(6).setPreferredWidth(90);
    caseTable.getColumn(6).setMaxWidth(90);
    caseTable.getColumn(7).setPreferredWidth(150);
    caseTable.getColumn(7).setMaxWidth(150);
    caseTable.getColumn(7).setResizable(false);
    caseTable.getColumn(8).setPreferredWidth(100);
    caseTable.getColumn(8).setMaxWidth(100);
    caseTable.getColumn(9).setMaxWidth(50);
    caseTable.getColumn(9).setResizable(false);

    caseTable.setAutoCreateColumnsFromModel(false);

    int count = 0;
    for (TableColumn c : caseTable.getColumns()) {
        c.setIdentifier((Integer) count);
        count++;

        c.addPropertyChangeListener(new PropertyChangeListener() {
            public void propertyChange(PropertyChangeEvent evt) {
                if ("visible".equals(evt.getPropertyName())) {
                    TableColumnExt columnExt = (TableColumnExt) evt.getSource();

                    if (columnExt.isVisible()) {
                        model.removeInvisibleColumn(columnExt.getModelIndex());
                    } else {
                        model.addInvisibleColumn(columnExt.getModelIndex());
                    }
                }
            }
        });
    }

    JScrollPane caseScrollPane = new JScrollPane(caseTable, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

    add(caseScrollPane, BorderLayout.CENTER);

    caseTable.setDefaultRenderer(Date.class, new DefaultTableRenderer(new StringValue() {
        private static final long serialVersionUID = 4782416330896582518L;

        public String getString(Object value) {
            return value != null ? DateFormats.getProgressiveDateTimeValue((Date) value, Locale.getDefault())
                    : "";
        }
    }));
    caseTable.setDefaultRenderer(ArrayList.class, new DefaultTableCellRenderer() {

        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
                boolean hasFocus, int row, int column) {
            if (value == null)
                return this;
            if (value instanceof SeparatorList.Separator)
                return caseTable.getDefaultRenderer(SeparatorList.Separator.class)
                        .getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

            JPanel renderer = new JPanel(new FlowLayout(FlowLayout.LEFT));

            ArrayList<String> icons = (ArrayList<String>) value;
            for (String icon : icons) {
                ImageIcon image = i18n.icon(Icons.valueOf(icon), 11);
                JLabel iconLabel = image != null ? new JLabel(image, SwingConstants.LEADING)
                        : new JLabel("   ");
                renderer.add(iconLabel);
            }
            if (isSelected)
                renderer.setBackground(table.getSelectionBackground());
            return renderer;
        }
    });
    caseTable.setDefaultRenderer(CaseStates.class, new DefaultTableCellRenderer() {
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
                boolean hasFocus, int row, int column) {
            if (value == null)
                return this;

            EventTableModel model = (EventTableModel) table.getModel();
            boolean hasResolution = !Strings
                    .empty(((CaseTableValue) model.getElementAt(row)).resolution().get());
            boolean removed = ((CaseTableValue) model.getElementAt(row)).removed().get();

            String iconName = hasResolution
                    ? "case_status_withresolution_" + value.toString().toLowerCase() + "_icon"
                    : "case_status_" + value.toString().toLowerCase() + "_icon";

            iconName = removed ? "case_status_draft_icon" : iconName;

            JLabel renderedComponent = (JLabel) super.getTableCellRendererComponent(table, value, isSelected,
                    hasFocus, row, column);
            renderedComponent.setHorizontalAlignment(SwingConstants.CENTER);
            setText(null);

            setIcon(i18n.icon(CaseResources.valueOf(iconName), i18n.ICON_16));
            setName(i18n
                    .text(CaseResources.valueOf("case_status_" + value.toString().toLowerCase() + "_text")));
            setToolTipText(i18n
                    .text(CaseResources.valueOf("case_status_" + value.toString().toLowerCase() + "_text")));

            return this;
        }
    });

    caseTable.setDefaultRenderer(PriorityValue.class, new DefaultTableCellRenderer() {
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
                boolean hasFocus, int row, int column) {
            final PriorityValue priority = (PriorityValue) value;
            String val = priority == null ? "" : priority.text().get();

            JPanel panel = new JPanel();
            FormLayout layout = new FormLayout("10dlu, 50dlu:grow", "pref");
            DefaultFormBuilder formBuilder = new DefaultFormBuilder(layout, panel);

            panel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
            JLabel label = new JLabel() {
                @Override
                protected void paintComponent(Graphics g) {
                    Color color = getBackground();
                    if (priority != null) {
                        if (!Strings.empty(priority.color().get()))
                            color = new Color(parseInt(priority.color().get()));
                        else
                            color = Color.BLACK;
                    }
                    final Color FILL_COLOR = ColorUtil.removeAlpha(color);

                    Graphics2D g2 = (Graphics2D) g.create();

                    try {
                        g2.setRenderingHint(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON);
                        g2.setColor(Color.LIGHT_GRAY);
                        final int DIAM = Math.min(getWidth(), getHeight());
                        final int inset = 3;
                        g2.fill(new Ellipse2D.Float(inset, inset, DIAM - 2 * inset, DIAM - 2 * inset));
                        g2.setColor(FILL_COLOR);
                        final int border = 1;
                        g2.fill(new Ellipse2D.Float(inset + border, inset + border,
                                DIAM - 2 * inset - 2 * border, DIAM - 2 * inset - 2 * border));
                    } finally {
                        g2.dispose();
                    }
                }
            };
            label.setPreferredSize(new Dimension(10, 10));
            //label.setBorder( BorderFactory.createLineBorder( Color.RED ) );
            formBuilder.add((Strings.empty(val) || "-".equals(val)) ? new JLabel() : label, new CellConstraints(
                    1, 1, 1, 1, CellConstraints.FILL, CellConstraints.FILL, new Insets(0, 0, 0, 0)));
            JLabel text = new JLabel(val);
            //text.setBorder( BorderFactory.createLineBorder( Color.RED ) );
            formBuilder.add(text, new CellConstraints(2, 1, 1, 1, CellConstraints.LEFT, CellConstraints.FILL,
                    new Insets(0, 0, 0, 0)));

            if (isSelected) {
                panel.setBackground(table.getSelectionBackground());
                text.setForeground(table.getSelectionForeground());
            }
            return panel;
        }
    });
    caseTable.setDefaultRenderer(SeparatorList.Separator.class, new DefaultTableCellRenderer() {
        @Override
        public Component getTableCellRendererComponent(JTable table, Object separator, boolean isSelected,
                boolean hasFocus, int row, int column) {
            String value = "";
            boolean emptyDescription = false;
            switch (model.getGroupBy()) {
            case caseType:
                emptyDescription = Strings.empty(
                        ((CaseTableValue) ((SeparatorList.Separator) separator).first()).caseType().get());
                value = !emptyDescription
                        ? ((CaseTableValue) ((SeparatorList.Separator) separator).first()).caseType().get()
                        : text(WorkspaceResources.no_casetype);
                break;
            case assignee:
                emptyDescription = Strings.empty(
                        ((CaseTableValue) ((SeparatorList.Separator) separator).first()).assignedTo().get());
                value = !emptyDescription
                        ? ((CaseTableValue) ((SeparatorList.Separator) separator).first()).assignedTo().get()
                        : text(WorkspaceResources.no_assignee);
                break;
            case project:
                emptyDescription = Strings
                        .empty(((CaseTableValue) ((SeparatorList.Separator) separator).first()).owner().get());
                value = !emptyDescription
                        ? ((CaseTableValue) ((SeparatorList.Separator) separator).first()).owner().get()
                        : text(WorkspaceResources.no_project);
                break;
            case dueOn:
                value = text(dueGroups[dueOnGroup(
                        ((CaseTableValue) ((SeparatorList.Separator) separator).first()).dueOn().get())]);
                break;
            case priority:
                emptyDescription = ((CaseTableValue) ((SeparatorList.Separator) separator).first()).priority()
                        .get() == null
                        || Strings.empty(((CaseTableValue) ((SeparatorList.Separator) separator).first())
                                .priority().get().color().get());
                value = !emptyDescription ? ((CaseTableValue) ((SeparatorList.Separator) separator).first())
                        .priority().get().text().get() : text(WorkspaceResources.no_priority);
                break;
            }

            Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
                    column);
            component.setFont(component.getFont().deriveFont(Font.BOLD + Font.ITALIC));
            component.setBackground(Color.lightGray);
            return component;
        }
    });

    AbstractHighlighter separatorHighlighter = (AbstractHighlighter) HighlighterFactory
            .createSimpleStriping(HighlighterFactory.QUICKSILVER);
    separatorHighlighter.setHighlightPredicate(
            new HighlightPredicate.TypeHighlightPredicate(SeparatorList.Separator.class));
    caseTable.addHighlighter(HighlighterFactory.createAlternateStriping());
    caseTable.addHighlighter(separatorHighlighter);

    addFocusListener(new FocusAdapter() {
        public void focusGained(FocusEvent e) {
            caseTable.requestFocusInWindow();
        }
    });

    model.getEventList().addListEventListener(new ListEventListener<CaseTableValue>() {
        public void listChanged(ListEvent<CaseTableValue> listChanges) {
            // Synchronize lists
            Set<String> labels = new HashSet<String>();
            Set<String> assignees = new HashSet<String>();
            Set<String> projects = new HashSet<String>();
            for (CaseTableValue caseTableValue : listChanges.getSourceList()) {
                for (LinkValue linkValue : caseTableValue.labels().get().links().get()) {
                    labels.add(linkValue.text().get());
                }

                assignees.add(caseTableValue.assignedTo().get());
                projects.add(caseTableValue.owner().get());
            }
            List<String> sortedLabels = new ArrayList<String>(labels);
            List<String> sortedAssignees = new ArrayList<String>(assignees);
            List<String> sortedProjects = new ArrayList<String>(projects);
            Collections.sort(sortedLabels);
            Collections.sort(sortedAssignees);
            Collections.sort(sortedProjects);
            sortedLabels.add(0, text(WorkspaceResources.all));
            sortedAssignees.add(0, text(WorkspaceResources.all));
            sortedProjects.add(0, text(WorkspaceResources.all));
        }
    });

    addHierarchyListener(new HierarchyListener() {
        public void hierarchyChanged(HierarchyEvent e) {
            if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) > 0) {
                if (CasesTableView.this.isShowing()) {
                    context.getActionMap().get("savePerspective").setEnabled(true);
                }
            }
        }
    });
    new RefreshWhenShowing(this, model);
}

From source file:swudi.swing.ConfigPanel.java

License:Apache License

private void initLayout() {
    setLayout(new FormLayout("fill:d:noGrow,left:4dlu:noGrow,fill:d:grow",
            "center:d:noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow,top:4dlu:noGrow,center:max(d;4px):noGrow"));

    contrastLabel.setText("Contrast");
    CellConstraints cc = new CellConstraints();
    add(contrastLabel, cc.xy(1, 1));/*from w  w  w .  j a v a  2  s.  co m*/
    contrastSlider = new JSlider();
    contrastSlider.setPaintLabels(false);
    contrastSlider.setPaintTicks(true);
    add(contrastSlider, cc.xy(3, 1, CellConstraints.FILL, CellConstraints.DEFAULT));
    final JLabel label2 = new JLabel();
    label2.setText("Invers");
    add(label2, cc.xy(1, 5));
    inversCheckbox = new JCheckBox();
    inversCheckbox.setHideActionText(false);
    inversCheckbox.setSelected(true);
    inversCheckbox.setText("");
    add(inversCheckbox, cc.xy(3, 5));
    calibrateButton = new JButton();
    calibrateButton.setHorizontalAlignment(2);
    calibrateButton.setHorizontalTextPosition(2);
    calibrateButton.setText("Calibrate");
    add(calibrateButton, cc.xy(3, 7, CellConstraints.DEFAULT, CellConstraints.FILL));
    resetButton = new JButton();
    resetButton.setHorizontalAlignment(2);
    resetButton.setHorizontalTextPosition(2);
    resetButton.setText("Reset");
    add(resetButton, cc.xy(3, 9, CellConstraints.DEFAULT, CellConstraints.FILL));
    backlightLabel.setText("Backlight");
    add(backlightLabel, cc.xy(1, 3));
    backlightSlider = new JSlider();
    backlightSlider.setPaintLabels(false);
    backlightSlider.setPaintTicks(true);
    add(backlightSlider, cc.xy(3, 3));

}

From source file:swudi.swing.NumPad.java

License:Apache License

public NumPad() {
    setLayout(new FormLayout(
            "fill:20px:grow," + "left:4dlu:noGrow," + "fill:20px:grow," + "left:4dlu:noGrow,"
                    + "fill:20px:grow",
            "center:20px:grow," + "top:3dlu:noGrow," + "center:20px:grow," + "top:3dlu:noGrow,"
                    + "center:20px:grow," + "top:3dlu:noGrow," + "center:20px:grow"));
    CellConstraints cc = new CellConstraints();
    add(buttonNum1, cc.xy(1, 1, CellConstraints.DEFAULT, CellConstraints.FILL));
    add(buttonNum4, cc.xy(1, 3, CellConstraints.DEFAULT, CellConstraints.FILL));
    add(buttonNum7, cc.xy(1, 5, CellConstraints.DEFAULT, CellConstraints.FILL));
    add(buttonNum2, cc.xy(3, 1, CellConstraints.DEFAULT, CellConstraints.FILL));
    add(buttonNum3, cc.xy(5, 1, CellConstraints.DEFAULT, CellConstraints.FILL));
    add(buttonNum5, cc.xy(3, 3, CellConstraints.DEFAULT, CellConstraints.FILL));
    add(buttonNum6, cc.xy(5, 3, CellConstraints.DEFAULT, CellConstraints.FILL));
    add(buttonNum8, cc.xy(3, 5, CellConstraints.DEFAULT, CellConstraints.FILL));
    add(buttonNum9, cc.xy(5, 5, CellConstraints.DEFAULT, CellConstraints.FILL));
    backButton.setActionCommand(BACKSPACE);
    add(backButton, cc.xy(1, 7, CellConstraints.DEFAULT, CellConstraints.FILL));
    add(buttonNum0, cc.xy(3, 7, CellConstraints.DEFAULT, CellConstraints.FILL));
    enterButton.setActionCommand(ENTER);
    add(enterButton, cc.xy(5, 7, CellConstraints.DEFAULT, CellConstraints.FILL));
}