Vaadin рдЬрд╛рд╡рд╛ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ-рдЖрдзрд╛рд░рд┐рдд UI рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИред рд╣рдо 4 рд╕рд╛рд▓ рд╕реЗ рдЕрдкрдиреЗ
рд╕реАрдмреАрдПрдП рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдбрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рджреМрд░рд╛рди рд╣рдордиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдлреА рдЕрдиреБрднрд╡ рдЬрдорд╛ рдХрд┐рдпрд╛ рд╣реИред
рд╡рд╛рдбрд┐рди рдХреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛:
- рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЙрдбрд▓ рдЬрд┐рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ / HTML рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
- рд╕рдореГрджреНрдз AJAX UI рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
- рдХрдИ рдШрдЯрдХ рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдРрдб-рдСрди
рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ:
- рдЙрдЪреНрдЪ рд╕рд░реНрд╡рд░ рдореЗрдореЛрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ, рдЪреВрдВрдХрд┐ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡ рдФрд░ рдЙрдирдХрд╛ рдбреЗрдЯрд╛ рдПрдХ HTTP рд╕рддреНрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рд╡рд╛рдбрд┐рди рдШрдЯрдХреЛрдВ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рдРрдб-рдСрди рд▓рд┐рдЦрдиреЗ рдХреА рдХрдард┐рдирд╛рдИ
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕рд╛рдЭрд╛ рдХрд░реВрдБрдЧрд╛ рдЬреЛ рд╣рдордиреЗ рд╡рд╛рдбрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдерд╛ред рдореИрдВ рдХрдИ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВрдВрдЧрд╛, рдмрд╛рдХреА рдХреЗ рд▓рд┐рдП - рдХреЗрд╡рд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБред
рдЧреНрд░рд┐рдбрд▓рд╛рдЗрдЙрдЯ рдЦрд╛рд▓реА рд╕реНрдерд╛рди
рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реНрдХреНрд░реАрди рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдФрд░ рдбреЗрдЯрд╛ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдХреНрд╕рд░, рдлреЙрд░реНрдо рдкрд░ рдШрдЯрдХреЛрдВ рдХреЛ рдЧреНрд░рд┐рдбрд▓рд╛рдЗрдпреВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреНрд░рд┐рдб рдкрд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЬрдм рдЖрдк рдорд╛рдирдХ рд╡рд╛рдбрд┐рди рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдпрд╛ рд╕реНрддрдВрднреЛрдВ рдХреЛ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЕрджреГрд╢реНрдп рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ
GridLayout
рд╡рдВрд╢ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
SuperGridLayout
рдЗрд╕реЗ
SuperGridLayout
рдХрд╣рддреЗ рд╣реИрдВред
рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
SuperGridLayout
- GridLayout
рдХреЗ рд╕рд░реНрд╡рд░ рдкрдХреНрд╖ рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реАSuperGridLayoutConnector
- рд╕рд░реНрд╡рд░ рдХреЛ рд╡рд┐рдЬреЗрдЯ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯрд░, GridLayoutConnector
рд╡рдВрд╢рдЬSuperGridLayoutWidget
- рд╡рд┐рдЬреЗрдЯ рд╣реА, VGridLayout
рд╡рдВрд╢рдЬ рд╣реИрдВ
рд╕рднреА рд╡рд╛рдбрд┐рди рдШрдЯрдХ рдЕрднреА рддрдХ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкреИрдХреЗрдЬ рдХреЗ рд╕реНрдерд╛рдиреАрдп рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИрдХреНрд╕ рдкрд░ рдЖрд╢реНрдЪрд░реНрдп рди рдХрд░реЗрдВред рд╣рдо
com.vaadin.ui
рдкреИрдХреЗрдЬ рдореЗрдВ рдЕрдкрдиреЗ рдШрдЯрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реИрдВред рдРрдб-рдСрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдерд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдХреА рдУрд░ рдмрджрд▓рд╛рд╡ рд╣реИрдВред
SuperGridLayout
рд╣реА рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИ:
public class SuperGridLayout extends GridLayout { }
SuperGridLayoutConnector
рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо
SuperGridLayoutWidget
рд╡рд┐рдЬреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред Vaadin getWidget
getWidget()
рд╡рд┐рдзрд┐ рдХреЗ рд░рд┐рдЯрд░реНрди рдорд╛рди рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
@Connect(SuperGridLayout.class) public class SuperGridLayoutConnector extends GridLayoutConnector { @Override public SuperGridLayoutWidget getWidget() { return (SuperGridLayoutWidget) super.getWidget(); } }
рдЦреИрд░, рдЫреБрдкрд╛ рдХреЛрдб рдЧреБрдЬрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдареАрдХ рдХреЗ рд╕рд╛рде рд╡рд┐рдЬреЗрдЯ рдХреЛрдб:
SuperGridLayoutWidget public class SuperGridLayoutWidget extends VGridLayout {
рдЕрдм рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдПрдХ рдирдП рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗрдЯ рд╡рд┐рдЬреЗрдЯ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╡рд╛рдбрд┐рди рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдкреВрд░рд╛ рдХреЛрдб рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: https://github.com/Haulmont/vaadin-super-grid
рдЯреНрд░реА рдФрд░ рдЯреЗрдмрд▓ рдореЗрдВ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╡рд╛рдбрд┐рди рдЙрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдЦреЛрд▓рд╛ред рдФрд░ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╡рд┐рд╢реЗрд╖ рддрд░рдХреАрдмреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреЗрдбрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдЪрдпрди рдЬреЛрдбрд╝реЗрдВ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИред
рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдкреЗрдбрд╝ рдХреЛ SuperTree рдирд╛рдо рджреЗрдВ рдФрд░ SuperTreeConnector
SuperTree
, SuperTreeWidget
рдФрд░ SuperTreeConnector
рдмрдирд╛рдПрдВред SuperTree
рдЯреНрд░реА рдХрд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рдВрд╢рдЬ рд╣реИред рдФрд░ SuperTreeWidget
рдкреВрд░реА рддрд░рд╣ рд╕реЗ VTree
рд╕реЗ рдХреЛрдб рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ, SuperTreeConnector
- TreeConnector
рд╕реЗ рдХреЛрдбред рдЗрд╕рдХреЗ рдмрд╛рдж, SuperTreeConnector
рдореЗрдВ рдХреЛрдб рдмрджрд▓реЗрдВ рддрд╛рдХрд┐ рдпрд╣ SuperTreeWiget
рд╡рд┐рдЬреЗрдЯ рдФрд░ @Connect(SuperTree.class)
рдПрдиреЛрдЯреЗрд╢рди @Connect(SuperTree.class)
ред
рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рдШрдЯрдХ рдЯреНрд░реА рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рднрд╛рдЧ рдХрд╛ рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдорд┐рд▓рд╛ред SuperTreeConnector
рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП contextMenuSelection
рдзреНрд╡рдЬ рдФрд░ contextMenuSelection
рд╕реЗрдЯ SuperTreeConnector
ред updateFromUIDL
рд╡рд┐рдзрд┐ рдореЗрдВ updateFromUIDL
рдЬрдм рдЭрдВрдбрд╛ рд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╡рд┐рдЬреЗрдЯ рдФрд░ рдЗрдВрдЯрд░рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП rendering = false
рдЭрдВрдбреЗ рдХреЛ updateFromUIDL
рдХрд░ рджреЗрдВрдЧреЗред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рд╣рдорд╛рд░рд╛ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХрдо рд╕реЗ рдХрдо рди рд╣реЛред рдЕрдЧрд▓рд╛, SuperTreeWidget.TreeNode
showContextMenu
рдЪрдпрди рдХреЛ showContextMenu
рд╡рд┐рдзрд┐ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдпрджрд┐ рд╡рд╣ рдЪрдпрдирд┐рдд рдирд╣реАрдВ рд╣реИ:
#showContextMenu public void showContextMenu(Event event) { if (!readonly && !disabled) {
рдЕрдм, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджрд╛рдПрдВ рдорд╛рдЙрд╕ рдмрдЯрди рдХреЗ рд╕рд╛рде рдиреЛрдб рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░рд╛ рдиреЛрдб рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЪрдпрдирд┐рдд рд╣реЛрдЧрд╛ред
рдкреВрд░рд╛ рдХреЛрдб рдпрд╣рд╛рдВ: https://github.com/Haulmont/vaadin-super-tree
рдХреАрдмреЛрд░реНрдб рд╢реЙрд░реНрдЯрдХрдЯ
рд╡рд╛рдбрд┐рди рдПрдкреАрдЖрдИ рдореЗрдВ рдпрд╣реА рд╣реБрдЖ рд╣реИ рдХрд┐ рд╣реЙрдЯрдХреАрдЬрд╝ Panel
, Window
рдпрд╛ UI
рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕реЗ рдмрдВрдзреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЧрд░реНрдо рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдирд┐рдХрдЯрддрдо рдкрджрд╛рдиреБрдХреНрд░рдо рдХрдВрдЯреЗрдирд░-рд╕рдВрд░рдХреНрд╖рдХ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рджреЛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╕рдорд╛рди рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореБрд╢реНрдХрд┐рд▓ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдареАрдХ рд╣реИ, рдЧрд░реНрдо рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдШрдЯрдХреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдкрд░рд┐рдорд╛рдг рдХреЗ рдПрдХ рдЖрджреЗрд╢ рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИред рдпрджрд┐ рд╣рдо рдмрд╕ рдкреИрдирд▓ рдореЗрдВ рд╕рднреА рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдШрдЯрдХреЛрдВ рдХреЛ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдХреНрд░реАрди рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░реЗрдВрдЧреЗред
рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рдкреЗрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рда рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЖрдЗрдП рд╣рдорд╛рд░реЗ SuperTextField
рдХреЛ рдПрдВрдЯрд░ рд╕рд░реНрдЪ рдХреЗ рд╕рд╛рде рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред
SuperTextField
рд╣рдо рдЕрдкрдиреЗ ActionManager
рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ ActionManager
, рдЬреЛ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреА рд╣реЙрдЯ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
SuperTextField public class SuperTextField extends TextField implements Action.Container {
SuperTextFieldConnector
JSON рд╕реЗ рдЧрд░реНрдо рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рд▓реЛрдбрд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВред
SuperTextFieldConnector @Connect(SuperTextField.class) public class SuperTextFieldConnector extends TextFieldConnector { @Override public SuperTextFieldWidget getWidget() { return (SuperTextFieldWidget) super.getWidget(); } @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { super.updateFromUIDL(uidl, client);
рдЦреИрд░, рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рд╣рдо рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХреЛ рд╕реБрдиреЗрдВрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдХреАрдмреЛрд░реНрдб рд╢реЙрд░реНрдЯрдХрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред
SuperTextFieldWidget public class SuperTextFieldWidget extends VTextField implements ShortcutActionHandler.ShortcutActionHandlerOwner { protected ShortcutActionHandler shortcutHandler; public SuperTextFieldWidget() {
рдЕрдм рд╣рдо рдПрдХ рд╣реА рдХреАрдмреЛрд░реНрдб рд╢реЙрд░реНрдЯрдХрдЯ рдХреЗ рд╕рд╛рде рдХрдИ SuperTextField
рдлрд╝реАрд▓реНрдб рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рдкреВрд░рд╛ рдХреЛрдб: https://github.com/Haulmont/vaadin-super-textfield
рдЯреИрдмрд╢реАрдЯ, рдЯреЗрдмрд▓, рдЪреЗрдХрдмреЙрдХреНрд╕, рдЯреНрд░реА, рдореЗрдиреВрдмрд╛рд░ рдХреЗ рд▓рд┐рдП -рдлреЛрдХрд╕ рд╢реИрд▓рд┐рдпрд╛рдБ
рд╡рд╛рдбрд┐рди рдореЗрдВ рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд░рд╛рдЬреНрдп рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред рдЖрдЗрдП рдлрд╝реЛрдХрд╕ рд╡рд╛рд▓реЗ рдкреЗрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП "-focus" рдЪрдпрдирдХрд░реНрддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд░рд▓ рд╣реИ: рд╣рдо FocusTree
, FocusTreeConnector
рдФрд░ FocusTreeWidget
рдШрдЯрдХ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рд╡рд┐рдЬреЗрдЯ рдореЗрдВ "-focus" рд╢реИрд▓реА рдЬреЛрдбрд╝реЗрдВ:
FocusTreeWidget public class FocusTreeWidget extends VTree { @Override public void onFocus(FocusEvent event) { super.onFocus(event); addStyleDependentName("focus"); } @Override public void onBlur(BlurEvent event) { super.onBlur(event); removeStyleDependentName("focus"); } }
рдЕрдм рд╡рд╣ рд╕рдм рдХреБрдЫ "v- рдЯреНрд░реА-рдлреЛрдХрд╕" рдЪрдпрдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реАрдПрд╕рдПрд╕ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
рдпрд╣рд╛рдБ рдЙрджрд╛рд╣рд░рдг: https://github.com/Haulmont/vaadin-focus-selector
рдХреЙрдореНрдмреЛрдмреЙрдХреНрд╕ рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдирд╣реАрдВ рд╣реИ
рд╕реАрдпреВрдмреАрдП рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдореЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд░рдо рд╡рд┐рд▓реЛрдкрди рдорд╛рдирдХ рд╣реИред рд╣рдЯрд╛рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рд╣реИ, рдпрджрд┐ рдЖрдк рдХреНрд░реЗрддрд╛ рдХреЗ рдХреБрдЫ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдЧреНрд░рд╛рд╣рдХ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдСрд░реНрдбрд░ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдЦрд░реАрджрд╛рд░ рдХреЗ рдЪрдпрди рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рджреВрд░рд╕реНрде рдХреНрд░реЗрддрд╛ рдХрд╛ рдирд╛рдо рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдЪрдпрди рд╕реВрдЪреА рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд╛рдбрд┐рди рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдмреЙрдХреНрд╕ рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рдбрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред
рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХреЗрд╡рд▓ рд╡рд┐рдХрд▓реНрдк рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ (рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ) рдХрд┐ рдРрд╕рд╛ рдХреЛрдИ рддрддреНрд╡ рд╣реИред рдРрд╕реА рд╣реИрдХ рдХреА рд╕реАрдорд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдВрдЬреА рдФрд░ рдЙрд╕рдХреЗ рдХрдВрдЯреЗрдирд░ рддрддреНрд╡ рдХрд╛ рдПрдХ рд╣реА рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдЖрдк рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдмрд╕ IndexedContainer
рдпрд╛ BeanContainer
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдФрд░ рдореВрд▓реНрдп рджреЛрдиреЛрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЬрдм рдЖрдк рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдРрд╕реА рд╣реИрдХ рдХрд╛рдо рдореЗрдВ рдЖ рд╕рдХрддреА рд╣реИред (рдЬреИрд╕реЗ SQLContainer рдпрд╛ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд)ред
SuperBeanContainer public class SuperBeanContainer<IDTYPE, BEANTYPE> extends BeanContainer<IDTYPE, BEANTYPE> { protected Object missingBoxValue; public SuperBeanContainer(Class<? super BEANTYPE> type) { super(type); } @Override public boolean containsId(Object itemId) { boolean containsFlag = super.containsId(itemId); if (!containsFlag) { missingBoxValue = itemId; } return true; } @Override public List getItemIds() { List<IDTYPE> itemIds = super.getItemIds(); if (missingBoxValue != null && !itemIds.contains(missingBoxValue)) { List<IDTYPE> newItemIds = new ArrayList<>(itemIds); newItemIds.add((IDTYPE) missingBoxValue); for (IDTYPE itemId : itemIds) { newItemIds.add(itemId); } itemIds = newItemIds; } return itemIds; } @Override public BeanItem<BEANTYPE> getItem(Object itemId) { if (missingBoxValue == itemId) { return new BeanItem(itemId); } return super.getItem(itemId); } @Override public int size() { int size = super.size(); if (missingBoxValue != null) { size++; } return size; } }
рдпрд╣рд╛рдБ рдЙрджрд╛рд╣рд░рдг: https://github.com/Haulmont/vaadin-super-combobox
рд╡рд╛рджрд┐рди 7 рдХреЗ рд╕рдВрдХреНрд░рдордг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
Vaadin 7 рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рд╕рд╣рд┐рдд рдмрд╣реБрдд рдмрджрд▓ рдЧрдпрд╛ рд╣реИред IE7 рдЕрдм рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, IE8 + рд╕рдорд░реНрдерди рдХрд╛ рджрд╛рд╡рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, IE 8 рдореЗрдВ рдмрдбрд╝реА рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВред рдШрдЯрдХ рдкреНрд░рддрд┐рдкрд╛рджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореМрд▓рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдЖ рд╣реИ, рдЕрдм рдпрд╣ рдЪрд░рдгрдмрджреНрдз рд╣реИ рдФрд░ рдЧрд╣рди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧрдгрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред IE8 рдореЗрдВ рдХреБрдЫ "рдЬрдЯрд┐рд▓" рд╕реНрдХреНрд░реАрди (5 рдиреЗрд╕реНрдЯреЗрдб рд╡рд░реНрдЯрд┐рдХрд▓ рдмреЙрдХреНрд╕ рдореЗрдВ 10 рдХреЙрд▓рдо рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛) рдХреНрд░реЛрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 10-20 рдЧреБрдирд╛ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рд╡реИрдбрд┐рди 7 рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдпрд╛ рдЪреБрдирддреЗ рд╕рдордп, рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВред
рд╣рдордиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реАрдзреЗ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ - рд╣рдо рд╡реИрдбрд┐рди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдореЗрдВ 6 рдФрд░ 7 рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЖрдк рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
dev.vaadin.com/ticket/12797 - рдмрдЧ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред
рд╕рд╛рде рд╣реА, рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдПрдб-рдСрди рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рд╕рднреА рдРрдб-рдСрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╡реИрдбрд┐рди 7 рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдП рд╣реИрдВред
рд╡рд╛рдбрд┐рди рдХреЗ рд▓рд┐рдП рдРрдб-рдСрди, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╕рдВрд╕реНрдХрд░рдг 7 рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ (рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ):
рд╡рд╛рдбрд┐рди рдкрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рд╡реЗрди, рдЧреНрд░реЛрд╡реА рдФрд░ рдЬреЗрдЯреНрдЯреА рдХреЗ рд╕рд╛рде рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░реАрдлреИрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: https://github.com/Haulmont/vaadin-sandbox - mvn clean package jetty:run
рдЖрд░рдХреНрд╖рдг
рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдХрдИ рдЕрдиреНрдп рд╕реБрдзрд╛рд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо рдЗрд╕ рд░реВрдк рдореЗрдВ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╡рд╛рдбрд┐рди рдХреЗ рд╣рдорд╛рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реБрдХ рдФрд░ рд╕рдВрд░рдХреНрд╖рд┐рдд рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред https://github.com/Haulmont/vaadin рд╢рд╛рдпрдж рдЖрдкрдХреЗ рд▓рд┐рдП рдпрд╣ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рд╕рдВрдкреВрд░реНрдг рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛ред рдЧрд┐рдЯ рдХрд╛ рд▓рд╛рдн рдЖрдкрдХреЛ рдЕрдкрд╕реНрдЯреНрд░реАрдо рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред