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

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

Introduction

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

Prototype

Alignment TOP

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

Click Source Link

Document

Put the component in the top.

Usage

From source file:se.streamsource.streamflow.client.ui.administration.forms.definition.PageEditView.java

License:Apache License

public PageEditView(@Service ApplicationContext context, @Uses PageEditModel model, @Structure Module module) {
    this.model = model;
    JPanel panel = new JPanel(new BorderLayout());
    refreshComponents = new RefreshComponents();

    ActionMap am = context.getActionMap(this);

    valueBinder = module.objectBuilderFactory().newObject(ValueBinder.class);
    actionBinder = module.objectBuilderFactory().newObjectBuilder(ActionBinder.class)
            .use(context.getActionMap(this)).newInstance();
    actionBinder.setResourceMap(context.getResourceMap(getClass()));

    JPanel topPanel = new JPanel(new BorderLayout());
    JPanel fieldPanel = new JPanel();
    FormLayout fieldFormLayout = new FormLayout("45dlu, 5dlu, 150dlu:grow", "pref, pref");

    DefaultFormBuilder fieldFormBuilder = new DefaultFormBuilder(fieldFormLayout, fieldPanel);
    fieldFormBuilder.setBorder(Borders.createEmptyBorder("4dlu, 4dlu, 4dlu, 4dlu"));

    fieldFormBuilder.append(text(AdministrationResources.type_label),
            new JLabel(text(AdministrationResources.page_break_field_type)));
    fieldFormBuilder.nextLine();//from   w  w w .  ja v  a  2 s .  c  o  m

    fieldFormBuilder.add(new JLabel(text(AdministrationResources.name_label)));
    fieldFormBuilder.nextColumn(2);
    fieldFormBuilder
            .add(valueBinder.bind("description", actionBinder.bind("changeDescription", descriptionField)));

    topPanel.add(fieldPanel, BorderLayout.NORTH);

    JPanel rulePanel = new JPanel();
    FormLayout ruleFormLayout = new FormLayout("45dlu, 5dlu, 150dlu, 5dlu, 45dlu, 5dlu, 150dlu:grow",
            "pref, pref, pref, pref:grow");

    DefaultFormBuilder ruleFormBuilder = new DefaultFormBuilder(ruleFormLayout, rulePanel);
    ruleFormBuilder.addSeparator(text(AdministrationResources.visibility_rule));
    ruleFormBuilder.setBorder(Borders.createEmptyBorder("4dlu, 4dlu, 4dlu, 4dlu"));

    ruleFormBuilder.nextLine();

    ruleFormBuilder.add(new JLabel(text(AdministrationResources.rule_field_id)));
    ruleFormBuilder.nextColumn(2);
    ruleFormBuilder.add(valueBinder.bind("fieldId", actionBinder.bind("changeRuleFieldId", ruleFieldIdCombo)));
    ruleFieldIdCombo.setRenderer(new LinkListCellRenderer());

    ruleFormBuilder.nextColumn(2);

    ruleFormBuilder.add(new JLabel(text(AdministrationResources.rule_values)));

    VisibilityRuleValuesView visibilityRuleValuesView = module.objectBuilderFactory()
            .newObjectBuilder(VisibilityRuleValuesView.class).use(model.newVisibilityRuleValuesModel())
            .newInstance();
    //visibilityRuleValuesView.setMaximumSize( new Dimension(150, 75 ) );
    ruleFormBuilder.add(visibilityRuleValuesView,
            new CellConstraints(7, 2, 1, 3, CellConstraints.FILL, CellConstraints.FILL));

    ruleFormBuilder.nextLine();

    ruleFormBuilder.add(new JLabel(text(AdministrationResources.rule_condition)));
    ruleFormBuilder.nextColumn(2);
    ruleFormBuilder
            .add(valueBinder.bind("condition", actionBinder.bind("changeRuleCondition", ruleConditionCombo)));
    ruleConditionCombo.setRenderer(new DefaultListRenderer() {
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
                boolean cellHasFocus) {
            if (value instanceof LinkValue) {
                LinkValue itemValue = (LinkValue) value;
                String val = itemValue == null ? ""
                        : text(VisibilityRuleCondition.valueOf(itemValue.text().get()));

                return super.getListCellRendererComponent(list, val, index, isSelected, cellHasFocus);
            } else
                return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
        }
    });

    ruleFormBuilder.add(new JLabel(text(AdministrationResources.rule_visible_when)),
            new CellConstraints(1, 4, 1, 1, CellConstraints.FILL, CellConstraints.TOP));

    javax.swing.Action visibilityWhenToTrueAction = am.get("changeVisibleWhenToTrue");
    javax.swing.Action visibilityWhenToFalseAction = am.get("changeVisibleWhenToFalse");

    buttonGroup = new JXRadioGroup();
    buttonGroup.setLayoutAxis(BoxLayout.LINE_AXIS);
    visibleWhenTrue = new JRadioButton(visibilityWhenToTrueAction);
    visibleWhenFalse = new JRadioButton(visibilityWhenToFalseAction);
    buttonGroup.add(visibleWhenTrue);
    buttonGroup.add(visibleWhenFalse);

    ruleFormBuilder.add(buttonGroup,
            new CellConstraints(3, 4, 1, 1, CellConstraints.FILL, CellConstraints.TOP));

    topPanel.add(rulePanel, BorderLayout.CENTER);
    panel.add(topPanel, BorderLayout.NORTH);
    panel.add(new JPanel(), BorderLayout.CENTER);

    refreshComponents.visibleOn("possiblerulefields", rulePanel);

    setViewportView(panel);

    new RefreshWhenShowing(this, this);
}

From source file:se.streamsource.streamflow.client.ui.administration.organisationsettings.MailRestrictionsView.java

License:Apache License

public MailRestrictionsView(@Service ApplicationContext context, @Uses final MailRestrictionsModel model) {
    this.model = model;

    FormLayout layout = new FormLayout("150dlu, 2dlu, 50, 200", "pref");
    setLayout(layout);//from   w  w w  . java  2  s  . c  o m
    setMaximumSize(new Dimension(Short.MAX_VALUE, 50));
    builder = new DefaultFormBuilder(layout, this);

    builder.add(new JLabel(i18n.text(AdministrationResources.mailrestrictions_addresses)),
            new CellConstraints(1, 1, 1, 1, CellConstraints.LEFT, CellConstraints.TOP, new Insets(4, 0, 0, 0)));

    JPanel addressPanel = new JPanel(new BorderLayout());
    addressPanel.setBorder(Borders.createEmptyBorder("2dlu, 2dlu, 2dlu, 2dlu"));

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

    JPopupMenu options = new JPopupMenu();
    options.add(am.get("rename"));
    options.add(am.get("remove"));

    JScrollPane scrollPane = new JScrollPane();
    EventList<LinkValue> itemValueEventList = model.getList();
    list = new JList(new EventListModel<LinkValue>(itemValueEventList));
    list.setCellRenderer(new LinkListCellRenderer());
    scrollPane.setViewportView(list);
    addressPanel.add(scrollPane, BorderLayout.CENTER);

    JPanel toolbar = new JPanel();
    toolbar.add(new StreamflowButton(am.get("add")));
    toolbar.add(new StreamflowButton(new OptionsAction(options)));
    addressPanel.add(toolbar, BorderLayout.SOUTH);

    list.getSelectionModel()
            .addListSelectionListener(new SelectionActionEnabler(am.get("remove"), am.get("rename")));

    builder.add(addressPanel, new CellConstraints(3, 1, 2, 1));

    new RefreshWhenShowing(this, model);

}

From source file:se.streamsource.streamflow.client.ui.administration.projectsettings.CaseDueOnNotificationView.java

License:Apache License

public CaseDueOnNotificationView(@Service ApplicationContext context, @Uses CaseDueOnNotificationModel model) {
    this.model = model;
    model.addObserver(this);

    threshold.setColumns(2);//from   w  ww.  j ava2 s  .c om
    FormLayout layout = new FormLayout("150dlu, 2dlu, 50, 200", "pref, pref, pref");
    setLayout(layout);
    setMaximumSize(new Dimension(Short.MAX_VALUE, 50));
    builder = new DefaultFormBuilder(layout, this);
    builder.add(new JLabel(i18n.text(AdministrationResources.dueon_notification_threshold)),
            new CellConstraints(1, 1));
    builder.add(threshold, new CellConstraints(3, 1));

    builder.add(new JLabel(i18n.text(AdministrationResources.dueon_notification_active)),
            new CellConstraints(1, 2));
    builder.add(active, new CellConstraints(3, 2, 2, 1));

    builder.add(new JLabel(i18n.text(AdministrationResources.dueon_notification_additional_recipient)),
            new CellConstraints(1, 3, 1, 1, CellConstraints.LEFT, CellConstraints.TOP, new Insets(4, 0, 0, 0)));
    ActionMap am = context.getActionMap(this);
    setActionMap(am);

    new ActionBinder(am).bind("changeThreshold", threshold);
    new ActionBinder(am).bind("activateNotifications", active);

    new RefreshWhenShowing(this, model);
}

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  av a2s.  c o  m*/
    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) {/*  ww w.  jav a  2 s.  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.CaseLogListCellRenderer.java

License:Apache License

public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
        boolean cellHasFocus) {
    CaseLogEntryDTO entry = (CaseLogEntryDTO) value;

    JPanel renderer = new JPanel(new BorderLayout());
    FormLayout rowLayout = new FormLayout("30dlu, pref:grow, pref", "pref, fill:pref:grow");
    renderer.setLayout(rowLayout);/* w w w . j  a va2 s  . co m*/
    DefaultFormBuilder formBuilder = new DefaultFormBuilder(rowLayout, renderer);
    renderer.setBorder(new EmptyBorder(3, 3, 6, 3));

    // Icons
    JPanel icons = new JPanel(new BorderLayout());
    icons.setOpaque(false);
    if (entry.myPagesVisibility().get()) {
        icons.add(myPagesPublishedIcon, BorderLayout.WEST);
    }
    switch (entry.caseLogType().get()) {
    case system:
        icons.add(systemIcon, BorderLayout.EAST);
        break;
    case custom:
        icons.add(customIcon, BorderLayout.EAST);
        break;
    case contact:
        icons.add(contactIcon, BorderLayout.EAST);
        break;
    case form:
        icons.add(formIcon, BorderLayout.EAST);
        break;
    case conversation:
        icons.add(conversationIcon, BorderLayout.EAST);
        break;
    case attachment:
        icons.add(attachmentIcon, BorderLayout.EAST);
        break;
    default:
        break;
    }

    formBuilder.add(icons, new CellConstraints(1, 1, 1, 2, CellConstraints.RIGHT, CellConstraints.TOP,
            new Insets(0, 0, 0, 10)));
    // User
    JLabel user = new JLabel(entry.creator().get());
    user.setForeground(Color.GRAY);
    formBuilder.add(user, new CellConstraints(2, 1, 1, 1, CellConstraints.LEFT, CellConstraints.TOP));

    // Date
    JLabel date = new JLabel(
            DateFormats.getProgressiveDateTimeValue(entry.creationDate().get(), Locale.getDefault()));
    date.setForeground(Color.GRAY);
    formBuilder.add(date, new CellConstraints(3, 1, 1, 1, CellConstraints.RIGHT, CellConstraints.TOP));

    // Message
    String entryMessage = entry.message().get();
    if (!Strings.empty(entryMessage)) {
        entryMessage = String.format("<html><div WIDTH=%d>%s</div><html>", 500,
                entryMessage.trim().replace("\n", "<br>"));
    }
    JLabel message = new JLabel(entryMessage);
    message.setForeground(Color.BLACK);
    formBuilder.add(message, new CellConstraints(2, 2, 2, 1, CellConstraints.LEFT, CellConstraints.TOP));

    return renderer;
}

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);//from w ww .  j  ava  2s .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.contacts.ContactView.java

License:Apache License

public ContactView(@Service ApplicationContext appContext, @Structure Module module) {
    setLayout(layout);/*w  ww. j a v a2s .c o m*/

    context = appContext;
    setActionMap(context.getActionMap(this));

    add(new JLabel(), "EMPTY");

    DefaultComboBoxModel contactPreferenceModel = new DefaultComboBoxModel();
    for (ContactPreference preference : ContactPreference.values()) {
        contactPreferenceModel.addElement(preference);
    }
    contactPreferenceField.setModel(contactPreferenceModel);
    contactPreferenceField.setSelectedIndex(0);
    contactPreferenceField.setRenderer(new ListCellRenderer() {
        public Component getListCellRendererComponent(JList jList, Object o, int i, boolean b, boolean b1) {
            JLabel comp = new JLabel("null");
            if (o instanceof ContactPreference) {
                if (((ContactPreference) o) == ContactPreference.none) {
                    comp = new JLabel(" ");
                } else {
                    comp = new JLabel(i18n.text(WorkspaceResources.valueOf(((ContactPreference) o).name())));
                }
            }
            comp.setBorder(BorderFactory.createEmptyBorder(2, 4, 2, 0));
            return comp;
        }
    });

    viewBinder = module.objectBuilderFactory().newObject(ValueBinder.class);
    phoneViewBinder = module.objectBuilderFactory().newObject(ValueBinder.class);
    addressViewBinder = module.objectBuilderFactory().newObject(ValueBinder.class);
    emailViewBinder = module.objectBuilderFactory().newObject(ValueBinder.class);

    suggestModel = new StreetAddressSuggestModel();
    suggestAddress = new StreetAddressSuggestTextField(suggestModel, cityField, addressViewBinder);
    addressField = suggestAddress.getTextField();

    // Edit panel
    {
        FormLayout formLayout = new FormLayout("right:70dlu, 5dlu, 150dlu:grow",
                "pref, pref, pref, pref, pref, pref, pref, pref, pref, pref, pref, pref, 5dlu, top:70dlu:grow, pref, pref");
        this.setBorder(Borders.createEmptyBorder("2dlu, 2dlu, 2dlu, 2dlu"));

        form = new JPanel();
        JScrollPane scrollPane = new JScrollPane(form);
        scrollPane.getVerticalScrollBar().setUnitIncrement(30);
        scrollPane.setBorder(BorderFactory.createEmptyBorder());
        DefaultFormBuilder builder = new DefaultFormBuilder(formLayout, form);

        contactBinder = module.objectBuilderFactory().newObject(StateBinder.class);
        contactBinder.setResourceMap(context.getResourceMap(getClass()));
        ContactDTO template = contactBinder.bindingTemplate(ContactDTO.class);

        phoneNumberBinder = module.objectBuilderFactory().newObject(StateBinder.class);
        phoneNumberBinder.setResourceMap(context.getResourceMap(getClass()));
        ContactPhoneDTO phoneTemplate = phoneNumberBinder.bindingTemplate(ContactPhoneDTO.class);

        addressBinder = module.objectBuilderFactory().newObject(StateBinder.class);
        addressBinder.setResourceMap(context.getResourceMap(getClass()));
        ContactAddressDTO addressTemplate = addressBinder.bindingTemplate(ContactAddressDTO.class);

        emailBinder = module.objectBuilderFactory().newObject(StateBinder.class);
        emailBinder.setResourceMap(context.getResourceMap(getClass()));
        ContactEmailDTO emailTemplate = emailBinder.bindingTemplate(ContactEmailDTO.class);

        builder.add(new StreamflowButton(getActionMap().get("view")));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.name_label));
        builder.nextColumn(2);
        builder.add(contactBinder.bind(defaultFocusField = (JTextField) TEXTFIELD.newField(), template.name()));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.phone_label));
        builder.nextColumn(2);
        builder.add(phoneNumberBinder.bind(phoneField, phoneTemplate.phoneNumber()));
        builder.nextLine();

        builder.add(createLabel(WorkspaceResources.address_label));
        builder.nextColumn(2);
        builder.add(suggestAddress);
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.zip_label));
        builder.nextColumn(2);
        builder.add(addressBinder.bind(zipField, addressTemplate.zipCode()));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.city_label));
        builder.nextColumn(2);
        builder.add(addressBinder.bind(cityField, addressTemplate.city()));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.region_label));
        builder.nextColumn(2);
        builder.add(addressBinder.bind(regionField, addressTemplate.region()));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.country_label));
        builder.nextColumn(2);
        builder.add(addressBinder.bind(countryField, addressTemplate.country()));
        builder.nextLine();

        builder.add(createLabel(WorkspaceResources.email_label));
        builder.nextColumn(2);
        builder.add(emailBinder.bind(emailField, emailTemplate.emailAddress()));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.contact_id_label));
        builder.nextColumn(2);
        builder.add(contactBinder.bind(contactIdField, template.contactId()));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.company_label));
        builder.nextColumn(2);
        builder.add(contactBinder.bind(companyField, template.company()));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.contact_preference_label));
        builder.nextColumn(2);
        builder.add(contactBinder.bind(contactPreferenceField, template.contactPreference()),
                new CellConstraints(3, 12, 1, 1, CellConstraints.LEFT, CellConstraints.TOP,
                        new Insets(5, 0, 0, 0)));
        builder.nextLine(2);
        builder.add(createLabel(WorkspaceResources.note_label));
        builder.nextColumn(2);
        builder.add(contactBinder.bind(TEXTAREA.newField(), template.note()));

        builder.nextLine(2);
        builder.nextColumn(2);
        lookupPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
        lookupPanel.add(new StreamflowButton(getActionMap().get("lookupContact")));
        builder.add(lookupPanel);

        contactBinder.addObserver(this);
        phoneNumberBinder.addObserver(this);
        addressBinder.addObserver(this);
        emailBinder.addObserver(this);
        add(scrollPane, "EDIT");
    }

    // View panel
    {
        FormLayout formLayout = new FormLayout("right:70dlu, 5dlu, 150dlu:grow",
                "pref, pref, pref, pref, pref, pref, pref, pref, pref, pref, pref, pref, 5dlu, top:70dlu:grow, pref, pref");
        this.setBorder(Borders.createEmptyBorder("2dlu, 2dlu, 2dlu, 2dlu"));

        form = new JPanel();
        JScrollPane scrollPane = new JScrollPane(form);
        scrollPane.getVerticalScrollBar().setUnitIncrement(30);
        scrollPane.setBorder(BorderFactory.createEmptyBorder());
        DefaultFormBuilder builder = new DefaultFormBuilder(formLayout, form);

        builder.add(new StreamflowButton(getActionMap().get("edit")));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.name_label));
        builder.nextColumn(2);
        builder.add(viewBinder.bind("name", visibleIfNotEmpty(new JLabel("!"))));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.phone_label));
        builder.nextColumn(2);
        builder.add(phoneViewBinder.bind("phoneNumber", visibleIfNotEmpty(new JLabel("!"))));
        builder.nextLine();

        builder.add(createLabel(WorkspaceResources.address_label));
        builder.nextColumn(2);
        builder.add(addressViewBinder.bind("address", visibleIfNotEmpty(new JLabel("!"))));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.zip_label));
        builder.nextColumn(2);
        builder.add(addressViewBinder.bind("zipCode", visibleIfNotEmpty(new JLabel("!"))));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.city_label));
        builder.nextColumn(2);
        builder.add(addressViewBinder.bind("city", visibleIfNotEmpty(new JLabel("!"))));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.region_label));
        builder.nextColumn(2);
        builder.add(addressViewBinder.bind("region", visibleIfNotEmpty(new JLabel("!"))));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.country_label));
        builder.nextColumn(2);
        builder.add(addressViewBinder.bind("country", visibleIfNotEmpty(new JLabel("!"))));
        builder.nextLine();

        builder.add(createLabel(WorkspaceResources.email_label));
        builder.nextColumn(2);
        builder.add(emailViewBinder.bind("emailAddress", visibleIfNotEmpty(new JLabel("!"))));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.contact_id_label));
        builder.nextColumn(2);
        builder.add(viewBinder.bind("contactId", visibleIfNotEmpty(new JLabel("!"))));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.company_label));
        builder.nextColumn(2);
        builder.add(viewBinder.bind("company", visibleIfNotEmpty(new JLabel("!"))));
        builder.nextLine();
        builder.add(createLabel(WorkspaceResources.contact_preference_label));
        builder.nextColumn(2);
        builder.add(contactPreferenceLabel);

        builder.nextLine(2);
        builder.add(createLabel(WorkspaceResources.note_label));
        builder.nextColumn(2);
        builder.add(viewBinder.bind("note", visibleIfNotEmpty(new JLabel("!"))));

        add(scrollPane, "VIEW");
    }
}

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();/* w  ww .  j a  v  a  2  s . co  m*/

    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:tvbrowser.extras.reminderplugin.ReminderFrame.java

License:Open Source License

/**
 * Creates a new instance of ReminderFrame.
 *
 * @param list//from   w ww .j a v a  2  s.c  o  m
 *          The list of all reminders.
 * @param reminders
 *          The reminders to show.
 * @param autoCloseSecs
 *          The number seconds to wait before auto-closing the window. -1
 *          disables auto-closing.
 */
public ReminderFrame(final ReminderList list, final AbstractList<ReminderListItem> reminders,
        final int autoCloseSecs) {
    mGlobalReminderList = list;
    mReminderItems = reminders;

    // Check whether we have to use a frame or dialog
    // Workaround: If there is a modal dialog open a frame is not usable. All
    //             user interaction will be ignored.
    //             -> If there is a modal dialog open, we show this reminder as
    //                dialog, otherwise as frame.
    final Window parent = UiUtilities.getLastModalChildOf(MainFrame.getInstance());
    String title = mLocalizer.msg("title", "Reminder");

    // if this is a favorite, change the title to the name of the favorite
    if (reminders.size() == 1) {
        boolean found = false;
        for (Favorite favorite : FavoriteTreeModel.getInstance().getFavoriteArr()) {
            for (Program program : favorite.getPrograms()) {
                if (program.equals(reminders.get(0).getProgram())) {
                    title = favorite.getName();
                    found = true;
                    break;
                }
            }
            if (found) {
                break;
            }
        }
    }

    mDialog = new JDialog(parent, title);
    UiUtilities.registerForClosing(this);

    final JPanel jcontentPane = new JPanel(new BorderLayout(0, 10));
    jcontentPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
    mDialog.setContentPane(jcontentPane);

    mLayout = new FormLayout("pref:grow,3dlu,pref", "pref,3dlu");
    final PanelBuilder programsPanel = new PanelBuilder(mLayout);
    CellConstraints cc = new CellConstraints();

    final Date today = Date.getCurrentDate();
    programsPanel.add(mHeader = new JLabel(""), cc.xyw(1, 1, 3));
    programsPanel.setRow(3);
    int remainingMinutesMax = 0;

    ArrayList<ProgramPanel> panels = new ArrayList<ProgramPanel>(reminders.size());

    for (ReminderListItem reminder : reminders) {
        Program program = reminder.getProgram();
        mGlobalReminderList.blockProgram(program);
        // text label
        String msg;
        final int progMinutesAfterMidnight = program.getStartTime();
        int remainingMinutes = 0;
        if (today.compareTo(program.getDate()) >= 0
                && IOUtilities.getMinutesAfterMidnight() > progMinutesAfterMidnight) {
            msg = updateRunningTime();
        } else {
            msg = mLocalizer.msg("soonStarts", "Soon starts");
            remainingMinutes = ReminderPlugin.getTimeToProgramStart(program);
        }
        mHeader.setText(msg);
        remainingMinutesMax = Math.max(remainingMinutesMax, remainingMinutes);

        List<JComponent> componentList = new ArrayList<JComponent>();
        mComponents.put(reminder, componentList);

        final ProgramPanel panel = new ProgramPanel(program,
                new ProgramPanelSettings(
                        new PluginPictureSettings(PluginPictureSettings.ALL_PLUGINS_SETTINGS_TYPE), false,
                        ProgramPanelSettings.X_AXIS));
        componentList.add(panel);
        panels.add(panel);
        panel.setMinimumSize(new Dimension(300, 50));
        panel.setWidth(300);
        // register panel with tooltip manager
        panel.setToolTipText("");
        panel.addPluginContextMenuMouseListener(ReminderPluginProxy.getInstance());

        final JPanel channelPanel = new JPanel(new BorderLayout());
        componentList.add(channelPanel);
        if (program.getLength() > 0) {
            final JLabel endTime = new JLabel(
                    mLocalizer.msg("endTime", "until {0}", program.getEndTimeString()));
            channelPanel.add(endTime, BorderLayout.PAGE_START);
        }
        String channelName = program.getChannel().getName();
        JLabel channelLabel = new JLabel();
        channelLabel.setToolTipText(channelName);
        channelLabel.setIcon(UiUtilities.createChannelIcon(program.getChannel().getIcon()));
        channelLabel.setHorizontalTextPosition(SwingConstants.RIGHT);
        channelPanel.add(channelLabel, BorderLayout.CENTER);
        channelLabel = new JLabel(channelName);
        channelPanel.add(channelLabel, BorderLayout.PAGE_END);

        int layoutStartRow = programsPanel.getRowCount();
        mLayout.appendRow(RowSpec.decode("pref"));
        programsPanel.add(panel, cc.xy(1, programsPanel.getRow(), CellConstraints.FILL, CellConstraints.FILL));
        programsPanel.add(channelPanel,
                cc.xy(3, programsPanel.getRow(), CellConstraints.LEFT, CellConstraints.TOP));
        programsPanel.nextRow();

        String comment = reminder.getComment();
        if (comment != null && comment.length() > 0) {
            mLayout.appendRow(RowSpec.decode("2dlu"));
            mLayout.appendRow(RowSpec.decode("pref"));
            mLayout.appendRow(RowSpec.decode("2dlu"));
            JLabel commentLabel = new JLabel(comment);
            componentList.add(commentLabel);
            programsPanel.add(commentLabel, cc.xyw(1, programsPanel.getRow() + 1, 3));
            programsPanel.nextRow(3);
        }
        int layoutEndRow = programsPanel.getRowCount();
        mPanelRange.put(reminder, new Integer[] { layoutStartRow, layoutEndRow });
    }

    // initialize close button with full text, so it can show the countdown later without size problems
    mRemainingSecs = autoCloseSecs;
    mAutoCloseAtMillis = System.currentTimeMillis() + 1000 * autoCloseSecs;
    final JPanel btnPanel = new JPanel(new BorderLayout(10, 0));
    mCloseBtText = Localizer.getLocalization(Localizer.I18N_CLOSE);
    int seconds = mRemainingSecs;
    if (ReminderPlugin.getInstance().getSettings().getProperty("showTimeCounter", "false")
            .compareTo("true") == 0) {
        seconds = 10;
    }
    mCloseBt = new JButton(getCloseButtonText(seconds));
    mDialog.getRootPane().setDefaultButton(mCloseBt);

    for (ReminderListItem reminder : reminders) {
        if (reminder.getMinutes() < remainingMinutesMax) {
            remainingMinutesMax = reminder.getMinutes();
        }
    }

    mReminderCB = new JComboBox();
    int i = 0;
    while (i < REMIND_VALUE_ARR.length && REMIND_VALUE_ARR[i] < remainingMinutesMax) {
        mReminderCB.addItem(REMIND_MSG_ARR[i]);
        i++;
    }
    // don't show reminder selection if it contains only the
    // entry "don't remind me"
    mReminderCB.setVisible(mReminderCB.getItemCount() > 1);

    btnPanel.add(mReminderCB, BorderLayout.WEST);
    btnPanel.add(mCloseBt, BorderLayout.EAST);

    final JScrollPane scrollPane = new JScrollPane(programsPanel.getPanel());
    scrollPane.setBorder(BorderFactory.createEmptyBorder());
    jcontentPane.add(scrollPane, BorderLayout.CENTER);
    jcontentPane.add(btnPanel, BorderLayout.SOUTH);

    mCloseBt.addActionListener(new ActionListener() {
        public void actionPerformed(final ActionEvent event) {
            close();
        }
    });

    if (mRemainingSecs > 0) {
        updateCloseBtText();
        mAutoCloseTimer = new Timer(1000, new ActionListener() {
            public void actionPerformed(final ActionEvent evt) {
                handleTimerEvent();
            }
        });
        mAutoCloseTimer.start();
    }

    for (ProgramPanel programPanel : panels) {
        programPanel.setMinimumSize(new Dimension(300, 50));
    }
    mDialog.pack();

    mCloseBt.setText(mCloseBtText);
    mDialog.setAlwaysOnTop(ReminderPlugin.getInstance().getSettings().getProperty("alwaysOnTop", "true")
            .equalsIgnoreCase("true"));

    UiUtilities.centerAndShow(mDialog);
    mDialog.toFront();

    if (mDialog.isAlwaysOnTop()) {
        mDialog.addWindowFocusListener(new WindowFocusListener() {
            public void windowGainedFocus(final WindowEvent e) {
            }

            public void windowLostFocus(final WindowEvent e) {
                mDialog.setAlwaysOnTop(false);
                UiUtilities.getLastModalChildOf(MainFrame.getInstance()).toFront();
            }
        });
    }

    mDialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    mDialog.addWindowListener(new WindowAdapter() {
        public void windowClosing(final WindowEvent e) {
            close();
        }
    });

    for (ReminderListItem reminder : reminders) {
        reminder.getProgram().addChangeListener(this);
    }
}