List of usage examples for com.jgoodies.forms.layout CellConstraints TOP
Alignment TOP
To view the source code for com.jgoodies.forms.layout CellConstraints TOP.
Click Source Link
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); } }