Zetes: рдЬрд╛рд╡рд╛ рдмрд╣реБ-рдордВрдЪ GUI рдХреЗ рд╕рд╛рде рд▓реЗрдХрд┐рди Oracle JVM рдХреЗ рдмрд┐рдирд╛

рдЫрд╡рд┐



рдЕрдореВрд░реНрдд



рд▓реЗрдЦ рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдУрд░реЗрдХрд▓ рдЬреЗрдЖрд░рдИ рдпрд╛ рдУрдкрдирдЬреЗрдбрдХреЗ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рддрд╣рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП "рджреЗрд╢реА" рд▓реБрдХ рдФрд░ рдлреАрд▓ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЪрд┐рдВрддрд╛ рд╣реИред



рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдЖрдкрдХреЛ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓реЗрдЧреА рдЬреЛ рдХреЗрд╡рд▓ рд╕рд┐рд╕реНрдЯрдо рдПрдкреАрдЖрдИ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдХреЛрдИ "рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛" рд╕реНрдЯреИрдореНрдк рдирд╣реАрдВ рд╣реЛрдЧрд╛ред



рдврд╛рдВрдЪреЗ рдХреЗ рд╕рднреА рдШрдЯрдХреЛрдВ рдореЗрдВ рдЙрджрд╛рд░ рд▓рд╛рдЗрд╕реЗрдВрд╕ (рдмреАрдПрд╕рдбреА рдпрд╛ рдЕрдкрд╛рдЪреЗ) рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА (рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рд╕рд╣рд┐рдд) рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред



рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЕрд▓реНрдлрд╛-рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЪрд░рдг рдореЗрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкреНрд░рдорд╛рдгрд┐рдд рд╣реИред рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдореИрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрддреЛрдВ рдХреЛ рд╕реБрдирдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛), рд▓реЗрдХрд┐рди рдкреНрд░рджрд░реНрд╢рди рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИред



рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рддрд╣рдд рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдХрд╛рдо рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдПрдХ рддреИрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд, рдЗрдХрдЯреНрдареЗ рд╕рдВрд╕реНрдХрд░рдг рдпрд╣рд╛рдВ рд╣реИ ред



рдореИрдВ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдПрд╣рд╕рд╛рди рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рд╕реЗ рдкреВрдЫрддрд╛ рд╣реВрдВред





1. рдкрд░рд┐рдЪрдп



рдПрдХ рдЫреЛрдЯрд╛ рдЧреЗрдп рдкрд░рд┐рдЪрдп рд╣реЛрдЧрд╛ред рдЖрдк рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреНрдпреЛрдВ рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдИред рд╕рдорд╕реНрдпрд╛ рдХрд╛ рддрдХрдиреАрдХреА рдкрдХреНрд╖ рдзрд╛рд░рд╛ 2 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред



1.1ред рд╢реАрд░реНрд╖рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ



рдЬрд╝реЗрдЯреЗрд╕ (рд░реВрд╕реА рдЕрдиреБрд╡рд╛рдж рдореЗрдВ - рдЬрд╝реЗрдЯ) "рдЕрдЧреЛрдЪрд░" рдУрд▓рдВрдкрд┐рдХ рджреЗрд╡рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ - рдмреЛрд░реЗрдб рднрд╛рдЗрдпреЛрдВ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрд░реНрдЧреЛрдиреЙрдЯреНрд╕ рдХреЗ рдЕрднрд┐рдпрд╛рди рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рдерд╛ред рдЙрд╕рдХреЗ рдкреИрд░реЛрдВ рдФрд░ рд╕рд┐рд░ рдкрд░ рдкрдВрдЦреЛрдВ рдХреЗ рд╕рд╛рде рд╕реБрдВрджрд░ рдХрд░рд┐рд╢реНрдорд╛рдИ рдЪрд░рд┐рддреНрд░ред



1.2ред рдкрд╣рд▓рд╛ рдХрджрдо



рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдереЛрдбрд╝рд╛ рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реИрдмрд░ рдкрд░ рд▓рд┐рдЦрд╛ рдерд╛ред рд╕рд╛рдордЧреНрд░реА рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдирдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рддреБрд░рдВрдд рдореБрдЭреЗ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрд╛ред рдпрд╣ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдерд╛ рдЬрд┐рд╕реЗ рдПрд╡рд┐рдпрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЖрдкрдХреЛ рдПрдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рдХреЛ рд╕реАрдзреЗ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдмреАрдПрд╕рдбреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕реА рднреА рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдореА рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореБрдЭреЗ рдкреВрд░реНрдг рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдорд╣рд╕реВрд╕ рд╣реБрдИред рдФрд░ рд╡рд╣ рдЗрд╕ рдЦреБрд╢реА рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрд╕реЗ рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдПрдХ рдирд┐рдордВрддреНрд░рдг рдорд┐рд▓рд╛ред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдРрд╕реЗ рд▓реЛрдЧ рдереЗ рдЬреЛ рд╕реНрд╡рдкреНрдирд┐рд▓ рд░реВрдк рд╕реЗ рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рдереЗ рдХрд┐ рдпрд╣рд╛рдВ рдХреБрдЫ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЬреАрдпреВрдЖрдИ рд▓рд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдФрд░, рдореБрдЭреЗ рдорд╛рдирдирд╛ тАЛтАЛрд╣реЛрдЧрд╛, рдореИрдВ рдЦреБрдж рднреА рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╡рд┐рдЪрд╛рд░ рд░рдЦрддрд╛ рдерд╛, рд╕рд╛рде рд╣реА рдПрд╡рд┐рдпрди рдбреЗрд╡рд▓рдкрд░реНрд╕ ...



рдореИрдВ рдЬреАрдпреВрдЖрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рддрд╛рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдЦреЛрдП рдмрд┐рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗред рдореИрдВ рд╕реЛрдЪрдиреЗ рд▓рдЧрд╛ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕ рдФрд░ рдУрдПрд╕ рдПрдХреНрд╕ рдкрд░ рдЪрд▓рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдереЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╣рдгред рдпрд╛ рд╕реНрдорд╛рд░реНрдЯрдЧрд┐рдЯред рдЙрди рд╕рднреА рдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрдЪреНрдЫрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рд╣реА рдирд╣реАрдВ) UI рдерд╛, рдФрд░ рд╡реЗ рд╕рднреА SWT рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рдереЗред рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрд╡рд┐рдпрди рджреНрд╡рд╛рд░рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдерд╛ред рдпрд╣ рдХреЗрд╡рд▓ рд╕рднреА рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ, рдХреБрдЫ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ "рдХрдордЬреЛрд░" рдХрд░реЗрдВ - рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЫреЛрдЯреЗ рд▓реЗрдХрд┐рди рдорд╣рддреНрд╡рд╛рдХрд╛рдВрдХреНрд╖реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдХрд╛рд╢, рдХрд╛рдо рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рдХрдард┐рдирд╛рдЗрдпрд╛рдВ рджрд┐рдЦрд╛рдИ рджреАрдВред рдЙрдирдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдирдХ рд╢реНрд░реЗрдгреА рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЕрдкреВрд░реНрдгрддрд╛ рдХреЗ рдХрд╛рд░рдг рдереЗ рдЬреЛ рдПрд╡рд┐рдпрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд▓реЛрдЧреЛрдВ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЬрд╛ рд░рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрднреА рддрдХ рдкреВрд░реНрдг рд╕рдВрдЧрддрддрд╛ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИред рдХрднреА-рдХрднреА рдЗрд╕рдореЗрдВ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдЪреАрдЬреЛрдВ рдХрд╛ рдЕрднрд╛рд╡ рд╣реЛрддрд╛ рд╣реИ ... рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдХреБрд░реНрд╕рд┐рдпрд╛рдВ тАЛтАЛрдЬреЛрдбрд╝реАрдВред рдореЗрд░реЗ "рдореВрд▓" рд╡рд░реНрдЧрдкрде рдХреЗ рд╕рд╛рде рдХреБрдЫ рдФрд░ рдХрдо рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдФрд░ рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЕрд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдХреБрдЫ рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рддрдХ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдореЗрд░реА рд▓рд▓рдХ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рд╣реЛ рдЧрдИ рдереАред



рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд▓реМрдЯрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореБрдЭреЗ рдХрд╛рдлреА рд╕рдордп рд╣реЛ рдЧрдпрд╛ рдерд╛ред рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЬрд╛рд╡рд╛ рдХреЛрд░ рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЦреЛрдЬрдирд╛ рдерд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЙрд╕ рд╕рдордп рдореИрдВ рдЬреЛ рдПрдХрдорд╛рддреНрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬрд╛рдирддрд╛ рдерд╛, рд╡рд╣ рдЬреАрдПрдирдпреВ рдХреНрд▓рд╛рд╕рдкрде рдерд╛ред рд▓реЗрдХрд┐рди рдЙрд╕рдХрд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдореБрдЭреЗ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛ рдерд╛ред рд╢рд╛рдпрдж рдореЗрд░рд╛ рд╢реЛрдз рд▓реЛрдЧреЛрдВ рдХреЛ рднреЛрд▓реЗрдкрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рддреАрдд рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди, рдЕрдлрд╕реЛрд╕, рднреЛрд▓рд╛рдкрди рд╣реБрдЖ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЕрдкрд╛рдЪреЗ рд╣рд╛рд░реНрдордиреА, рдЕрдм-рдореГрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣реАрдиреЗ (рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдЖрд╡рдзрд┐рдХ рдЦреЛрдЬ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрдХреНрд╖рд╛рдПрдВ рдереАрдВ рдФрд░ рд╕рднреА рдУрдПрд╕ рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рдирд╛ рдерд╛ рдЬреЛ рдореБрдЭреЗ рдмреНрдпрд╛рдЬ рджреЗрддреЗ рдереЗ, рд▓реЗрдХрд┐рди, рдЕрдлрд╕реЛрд╕, рдпрд╣ рдореГрдд рдерд╛ред рдПрд╡рд┐рдпрди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдпрд╣ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдп рдерд╛ред рдореИрдВ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдПрд╡рд┐рдпрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рд╡реЗ рд╕реАрдзреЗ рдПрд╡рд┐рдпрди рд╕реЗ рд╡рд╣рд╛рдВ рдХрдХреНрд╖рд╛рдПрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдмреАрдПрд╕рдбреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЕрдкрд╛рдЪреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЖрд░рд╛рдо рд╕реЗ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрд╡рд┐рдпрди рдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдХреНрд▓рд╛рд╕рдкрде рд╕реЗ рд▓рд┐рдП рдЧрдП рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ ред рдпрд╣ рдЬреНрдЮрд╛рди рдиреАрд▓реЗ рд╕реЗ рдПрдХ рдмреЛрд▓реНрдЯ рдХреА рддрд░рд╣ рдЯрдХрд░рд╛рдпрд╛ред рдмреЗрд╢рдХ! рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреНрд▓рд╛рд╕рдкреИрде рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рди рдХреЗрд╡рд▓ рдУрд░реЗрдХрд▓ рд▓рд╛рдЗрд╕реЗрдВрд╕рд┐рдВрдЧ рд╕реЗ рдореБрдХреНрдд рд╣реИ, рдмрд▓реНрдХрд┐ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдореБрдХрджрдореЗрдмрд╛рдЬреА рдХрд╛ рднреА рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рд╛рд▓рд┐рдпрд╛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрдпрд╛рдиреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдФрд░ рдЕрдкрд╛рдЪреЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЖрдкрдХреЛ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдпрд╣ рдЬреЛрдбрд╝рдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдХреНрд▓рд╛рд╕рдкрде рдЙрд╕реА рдЕрдкрд╛рдЪреЗ рд╣рд╛рд░реНрдордиреА рдХрд╛ рд╡рдВрд╢рдЬ рд╣реИред рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдмрдЪрд╛ рд╣реИред



рдЙрддреНрд╕рд╛рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдиреА рдЬрд╝рд░реВрд░рдд рдХреА рд╕рднреА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдШрд░ рдкрд░ рдПрдХ рдПрдкреНрдкрд▓ рдорд╢реАрди рдкрд░ рд░рдЦ рджрд┐рдпрд╛ред рдХреБрдЫ рдкрд░рд┐рд╖реНрдХрд░рдг рд╕реНрдкрд░реНрд╢ рдХреЗ рдмрд╛рдж, рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд╛рдлреА рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИ, рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ 15 рдорд┐рдирдЯ рд▓рдЧреЗ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореБрдЭреЗ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдкреВрд░реНрдг рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рдЬрд╛рд╡рд╛ рдорд┐рд▓рд╛ред рдЙрд╕ рд╕рдордп, рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдирд╕рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рд╣реА рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдпрд╣ рд╕рдм рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЦреБрд╢реА рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЧрдпрд╛ред рдХрд╛рд╢ ...



1.3ред рдбреЛрдкрд┐рдВрдЧ Android Classpath



рдмреЗрд╢рдХ, рдПрдВрдбреНрд░реЙрдЗрдб рд▓рд┐рдирдХреНрд╕ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреНрд▓рд╛рд╕рдкреИрде рдХрд╛ рдкреВрд░рд╛ рдореВрд▓ рднрд╛рдЧ рдкреЙрдЬрд╝рд┐рдХреНрд╕ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдореБрдЭреЗ рдПрдХ рдЧрдВрднреАрд░ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ - рдПрдВрдбреНрд░реЙрдЗрдб рдХреНрд▓рд╛рд╕рдкрде рдХреЛ Win32 рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдХрд░реАрдм 3 рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдХреА рдмрд╛рдд рд╣реИред рдЪреВрдБрдХрд┐ рдкреВрд░реА рдЕрд╕реЗрдВрдмрд▓реА MinGW рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА Posix рдлрд╝рдВрдХреНрд╢рди рдореМрдЬреВрдж рдереЗ (рдЬреЛ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬрд╝ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рджреЛрд╣рд░рд╛рдП рдЧрдП рдереЗ)ред рд▓реЗрдХрд┐рди, рдЕрдлрд╕реЛрд╕, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдереЛрдбрд╝реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдирд╕реЙрдХ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдмреАрдПрд╕рдбреА рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рдЕрдлрд╕реЛрд╕, рдХреБрдЫ рдЬрдЧрд╣реЛрдВ рдкрд░, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ I / O рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рднрд╛рдЧ рдореЗрдВ рдЙрдирд╕реЗ рдХрд╛рдлреА рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ)ред рджреВрд╕рд░рд╛ рднрд╛рдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдЕрдирд╛рдо рдкрд╛рдЗрдк рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реИрдВ рдФрд░ рдЧреИрд░-рдЕрд╡рд░реЛрдзрдХ I / O рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдХреБрдЫ рдирдП рдПрдкреАрдЖрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред



рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХреЙрдорд░реЗрдб рдЬрд╕реНрдЯрдореИрди рдиреЗ рдореЗрд░реЗ рд╢реЛрдз рдореЗрдВ рдореЗрд░реА рдорджрдж рдХреА, рдЙрдирдХреЗ рдмрд┐рдирд╛, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛, рдореИрдВ рдЕрднреА рднреА рдкреЙрдЬрд╝рд┐рдХреНрд╕ рдбреЙрдХреНрд╕ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдШреВрдорддрд╛ рд░рд╣реВрдВрдЧрд╛ред рд╣рдордиреЗ рд╕реНрд╡рдпрдВ рдХреБрдЫ рд▓рд┐рдЦрд╛ рдФрд░ рд╕рд░рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕рд░рд▓ рдврд╛рдБрдЪрд╛ рднреА ред рд╣рдордиреЗ рдЦреБрд▓реЗ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдПрдХ рдФрд░ рдЙрдзрд╛рд░ рд▓рд┐рдпрд╛, рдзреНрдпрд╛рди рд╕реЗ рдЬреАрдкреАрдПрд▓ рдХреЛрдб рд╕реЗ рдкрд░рд╣реЗрдЬ рдХрд┐рдпрд╛ред рднрдЧрд╡рд╛рди рдХрд╛ рд╢реБрдХреНрд░ рд╣реИ рдХрд┐ рд╣рдо рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЕрдХреЗрд▓реЗ рдРрд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ ...



рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкреЙрдЬрд╝рд┐рдХреНрд╕ рдПрдкреАрдЖрдИ (рд╕рд╛рдЗрдЧрд╡рд┐рди рдЗрд╕ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХрд╛ рдЕрдиреБрдХрд░рдг рдлрд┐рд░ рд╕реЗ рдХрд░рдирд╛ рдирд╣реАрдВ рдерд╛, рдЬреЛ рдХрд┐, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдмрд╕реЗ рдЙрджрд╛рд░ рд▓рд╛рдЗрд╕реЗрдВрд╕ рднреА рдирд╣реАрдВ рд╣реИ)ред рд╣рдо рд╕рд┐рд░реНрдл LUNI (рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд▓реИрдВрдЧ рдпреВрдЯрд┐рд▓реНрд╕ рдиреЗрдЯ рдЖрдИрдУ рдЪрд╛рд░ рдореБрдЦреНрдп рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЦрдбрд╝рд╛ рд╣реИ рдЬреЛ рдЬрд╛рд╡рд╛ рдХреЛрд░ рдмрдирд╛рддреЗ рд╣реИрдВ)ред



рдлрд┐рд▓рд╣рд╛рд▓, рдЗрд╕рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рдпрд╣ рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдмрдЧрдлрд┐рдХреНрд╕ рдЪрд░рдг рдореЗрдВ рд╣реИред рд░рд╛рд╕реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдЕрднреА рднреА рдХреБрдЫ рдкрд░реЗрд╢рд╛рдирд┐рдпрд╛рдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдЫреЛрдЯреА рдЪреАрдЬреЗрдВ рд╣реИрдВред



рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛, рд╣рдо рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред



2. рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рдЬрд░реВрд░реА рд╣реИ?



рд╕рд╡рд╛рд▓ рдореБрдЭреЗ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдбрд░ рд▓рдЧрддрд╛ рд╣реИред рдИрдорд╛рдирджрд╛рд░ рдЬрд╡рд╛рдм рдпрд╣ рд╣реИ: рдореИрдВ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рд▓реЗрдХрд┐рди, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдЬреЛ рдЕрднреА рднреА рдмрд╣реБрдд рдХрдо рд╣реИрдВ) рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдХрдо рд╕реЗ рдХрдо, рдЗрд╕рдХреА рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред



рдЬрд╝реЗрдЯреЗрд╕ рдХрд╛ рд▓рдХреНрд╖реНрдп рдЬрд╛рд╡рд╛ рдХреЛ рдбреЗрд╕реНрдХрдЯреЙрдк рд╡рд┐рдХрд╛рд╕ рдХреА рдУрд░ рдЬрд╛рд░реА рд░рдЦрдирд╛ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рднрд╛рд╖рд╛ рд╕реНрд╡рдпрдВ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реИ (рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд┐рд╕реА рддрд░рд╣, рд╕рдВрдХрд▓рд┐рдд рд░реВрдк рдореЗрдВ рдкреЛрд░реНрдЯреЗрдмрд▓), рдЬрдм рдЙрд╕ рдкрд░ рдорд▓реНрдЯреАрд╕рд┐рд╕реНрдЯрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЕрдЧрд░ рдбреЗрд╡рд▓рдкрд░ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдХрд╛ рдЖрд╡реЗрджрди рдХрдо рд╕реЗ рдХрдо "рдореВрд▓" рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рддреЛ рдЙрд╕реЗ рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред "рд╕рд╛рдВрд╕реНрдХреГрддрд┐рдХ рдЕрдВрддрд░" рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВред рдЕрдВрдзреЗрд░реЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рд╡рд┐рдВрдбреЛрдЬ (рдФрд░ рд▓рд┐рдирдХреНрд╕ + рдПрдХреНрд╕ + рдЬреАрдЯреАрдХреЗ) рдкрд░, рдореЗрдиреВ рдмрд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдУрдПрд╕ рдПрдХреНрд╕ рдореЗрдВ, рдореЗрдиреВ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдФрд░ рдЙрдирдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореМрдЬреВрдж рд╣реИред рд╡рд┐рдВрдбреЛрдЬ рдкрд░, рдПрдХреНрдЬрд╝рд┐рдЯ рдЖрдЗрдЯрдо рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рд╣рд╛рдпрддрд╛ рдореЗрдВ рдЖрдЗрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдУрдПрд╕ рдПрдХреНрд╕ рдореЗрдВ, рджреЛрдиреЛрдВ рд╕рд┐рд╕реНрдЯрдо рдореЗрдиреВ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред рд▓реЗрдХрд┐рди рдпреЗ рдЯреНрд░рд╛рдЗрдлрд▓реНрд╕ рд╣реИрдВред рдПрдХ рдЕрдВрддрд░ рдФрд░ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдУрдПрд╕ рдПрдХреНрд╕ рдореЗрдВ, рдПрдХ рдЬреАрдпреВрдЖрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдореЗрдВ рдирд╣реАрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдорд▓реНрдЯреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдпрд╛ рдПрдХрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ред рдпрд╣реА рд╣реИ, рдЬрдм рдЖрдк рдПрдХ рдирдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рд╢реЗрд▓ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕реЗ рдЪрд▓ рд░рд╣реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдкрдирд╛ рдирд╛рдо рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ (рдпрджрд┐ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдЗрд╕реЗ рдЕрдиреНрдп рд╕рд┐рд╕реНрдЯрдо рддрдВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рдореНрдпреБрд▓реЗрдЯреЗрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред



рдпреЗ (рдФрд░, рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдРрд╕реА рд╕рднреА рд╡рд┐рд╕рдВрдЧрддрд┐рдпрд╛рдВ) Zetes рджреНрд╡рд╛рд░рд╛ рд▓реА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд▓рд╛ рдЪрд░рдг, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡рд┐рдВрдбреЛрдЬрд╝ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдФрд░ рдУрдПрд╕ рдПрдХреНрд╕ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЬреАрд╕реАрдлреЛрдирдПрдл рдореЗрдВ рдЕрдкрдиреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред



рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдХрд╛рд░реНрдп рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдПрдкреАрдЖрдИ рдХреЛ "рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рднрд╛рдЬрдХ рдХреЗ рд▓рд┐рдП" рд▓рд╛рдирд╛ рд╣реИ, рджреВрд╕рд░реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХреЗ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рдХ рдХрд░рдирд╛ред



рдФрд░, рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЙрдардиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдЖрд╢рдВрдХрд╛ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдХрд╣реВрдВрдЧрд╛: рдирд╣реАрдВ, рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдХрдо рд╕реЗ рдХрдо рдЕрднреА рдХреЗ рд▓рд┐рдП рдореЛрдмрд╛рдЗрд▓ рдУрдПрд╕ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡реЗ рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рджреЛрдиреЛрдВ рдореЗрдВ рдбреЗрд╕реНрдХрдЯреЙрдк рд╡рд╛рд▓реЗ рд╕реЗ рдмрд╣реБрдд рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ ред



3. рддреЛ Zetes рдХреНрдпрд╛ рд╣реИ?



рдлреНрд░реЗрдорд╡рд░реНрдХ рдЖрдкрдХреЛ рдмрдирд╛рдП рдЧрдП рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓реЗрдиреЗ рдФрд░ рдПрдХ рджреЗрд╢реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрдХрдЯреНрдард╛ / рдкреИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рд╕рд┐рд╕реНрдЯрдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (рдПрд╕рдбрдмреНрд▓реНрдпреВрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЗрд╡рд▓ рдХреБрдЫ рдПрд╕рдбрдмреНрд▓реНрдпреВрдЯреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрд╡реЗрджрди рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ)ред рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ рд╡рд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдореЗрдХрдлрд╛рдЗрд▓ рд╣реИ, рдЬреЛ рдЕрдВрддрд┐рдо рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ (рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди) рд╡рд╛рд▓реЗ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред



рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде, рдЕрд╕реЗрдВрдмрд▓реА рд╕рд┐рд╕реНрдЯрдо рдЖрдкрдХреЛ рд╕реА ++ рдореЗрдВ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ - рдЧрддрд┐рд╢реАрд▓ рдФрд░ рд╕реНрдерд┐рд░ рджреЛрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рддреЛ, рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ "рд╢реБрджреНрдз" рдЬрд╛рд╡рд╛ рдореЗрдВ рджреЛрдиреЛрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдЦреБрд╢ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдпрд╣ рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЬреЗрдПрдирдЖрдИ рдХреНрдпрд╛ рд╣реИ, рдФрд░ "рдЕрдиреБрднрд╡реА рднреЗрдбрд╝рд┐рдпреЗ" рдЬреЛ рд╣рд░ рдЬрдЧрд╣ рдЬреЗрдПрдирдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред



4. Zetes рд╕реЗ рдХреНрдпрд╛ рдмрдирддрд╛ рд╣реИ?



рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд░реНрдЧ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдврд╛рдВрдЪреЗ рдХреЛ рддреАрди рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:



4.1ред ZetesFeet



рдХреЛрд░ рдореЗрдВ ZetesFeet рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдЗрд╕рдореЗрдВ рдПрд╡рд┐рдпрди, рд╕рд╛рде рд╣реА рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рджреЛ рд╡реЗрд░рд┐рдПрдВрдЯ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ - рдПрд╡рд┐рдпрди рдХреНрд▓рд╛рд╕рдкрд╛рде рдпрд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдХреНрд▓рд╛рд╕рдкрд╛рдеред



рдкреНрд░рддреНрдпреЗрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рддреБрд▓рдирд╛ рдХреА рдХрд╕реМрдЯреА рдПрд╡рд┐рдпрди рдХреНрд▓рд╛рд╕рдкрде Android Classpath
рдкреВрд░реНрдгрддрд╛ рдФрд░ рдЕрдиреБрдкрд╛рд▓рди рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдмрд╣реБрдд рдиреНрдпреВрдирддрдо рд╢рд╛рдорд┐рд▓ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдлреИрд▓рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рдЧрдВрднреАрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рд╕рднреА рдкреНрд░рдореБрдЦ рдЬрд╛рд╡рд╛ рдХреЛрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рднреНрд░рдорд┐рдд рдЖрд╡реЗрджрди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ Win32 рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдЬреБрдбрд╝реА рдЬрдЯрд┐рд▓рддрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдмреЗрд╢рдХ, рдЗрд╕ рддрд░рд╣ рдХреА рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдЬрд┐рд╕рдореЗрдВ SWT рдХрдХреНрд╖рд╛рдПрдВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ, рдЙрдирдХрд╛ рдЖрдХрд╛рд░ рдореЗрдЧрд╛рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддрд╛ рд╣реИ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ 25 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рддрдХ рдлреВрд▓рд╛ рд╣реБрдЖ рд╣реИред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реНрд╡рдпрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рдЬреЛ рд▓рдЧрднрдЧ 5 рдПрдордмреА рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдЖрдИрд╕реАрдпреВ 4 рд╕реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдЯреЗрдмрд▓ рдХреЗ рдХрд╛рд░рдг, рдПрдВрдбреНрд░реЙрдЗрдб рдХреНрд▓рд╛рд╕рдкреИрде рдореЗрдВ рд╢рд╛рдорд┐рд▓ рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдп
рд▓рд╛рдЗрд╕реЗрдВрд╕ BSD (GPL рд╕рдВрдЧрдд) рдЕрдкрд╛рдЪреЗ (рдЬреАрдкреАрдПрд▓ рдХреЗ рд╕рд╛рде рдЦреБрд▓рд╛, рд▓реЗрдХрд┐рди рдЕрд╕рдВрдЧрдд)


рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдмрд┐рдирд╛ рдкрд░реЗрд╢рд╛рдиреА рдХреЗ рдЬрд╛рд╡рд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдЦреБрдж рдХреА "рдмрд╛рдЗрдХ" рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдХреНрд▓рд╛рд╕рдкрд╛рде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред



рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, ZetesFeet рдореЗрдВ рд╕рднреА Zetes рдХрдХреНрд╖рд╛рдПрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдмрдирд╛рдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИрдВред



ZetesFeet рдХреЗ рдКрдкрд░, рджреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдП рдЧрдП рд╣реИрдВред



4.2ред ZetesHands



рдЙрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ - ZetesHands - рдЖрдкрдХреЛ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдирдИ рдкреНрд░рдгрд╛рд▓реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдбреАрдПрд╕рдПрд▓ рджреБрднрд╛рд╖рд┐рдпрд╛, рдпрд╣рд╛рдБ рдЖрдк рд╣реИрдВред рдЧреИрд░-рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди ZetesHands рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ, рдРрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдХрдВрд╕реЛрд▓ рд╡рд┐рдВрдбреЛ рдорд┐рд▓рддреА рд╣реИред рдУрдПрд╕ рдПрдХреНрд╕ рдореЗрдВ, рдпрд╣ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдВрдбрд▓ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



4.3ред ZetesWings



GUI рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА, ZetesWings рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрдЗрдХрди рдЬреЛрдбрд╝рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЖрдзрд╛рд░ рдХрдХреНрд╖рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡рд┐рдВрдбреЛрдЬ рдкрд░, рдХрдВрд╕реЛрд▓ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдУрдПрд╕ рдПрдХреНрд╕ рдкрд░, рдпрд╣ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рджреМрд░рд╛рди рдмрдВрдбрд▓ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреАрдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп "рд╕рд╛рдВрд╕реНрдХреГрддрд┐рдХ рдЕрдВрддрд░" (рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдКрдкрд░ рджрд┐рдП рдЧрдП рдереЗ) рдХреЛ рдпрд╣рд╛рдВ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдПрдкреАрдЖрдИ рдХреА рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдо рд╣реИред рдпрд╣ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рдкреНрд░рд╕реНрддреБрддрд┐ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╣реИред



Zetes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдореЗрдХрдлрд╛рдЗрд▓ рдореЗрдВ ZetesHands.mk рдпрд╛ ZetesWings.mk рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рд▓рд┐рдВрдХ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреЗ рдЧрдП рдРрдб-рдСрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред



5. рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ? рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ - рдЯрд┐рдиреА рд╡реНрдпреВрдЕрд░ рдЫрд╡рд┐ рджрд░реНрд╢рдХ







рдпрд╣рд╛рдВ рдореИрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ Zetes рдХреЗ рдЗрдХрдЯреНрдареЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ GitHub рдкрд░ рд░рд┐рд▓реАрдЬрд╝ рдкреГрд╖реНрда рд╕реЗ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред Zetes рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБред рдЪрд▓реЛ, рдЙрд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ, zetes-works



ред рдЗрд╕реЗ zetes



рдФрд░ zetes



рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ zetes



рдмрдирд╛рдПрдВ, рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣ рд╕реЗ target-**



рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЕрдирдкреИрдХ рдХрд░реЗрдВред рдЕрдм zetes-works



рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ tinyviewer



рдПрдХ tinyviewer



рдлрд╝реЛрд▓реНрдбрд░ рдирд╛рдордХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВред рд╣рдо рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕реЗ рдЯрд╛рдЗрдиреА рд╡реНрдпреВрдЕрд░ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ ZetesWings рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрд╡реЗрджрди рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЫрд╡рд┐ рджрд░реНрд╢рдХ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХрдИ рдлрд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рддреИрдпрд╛рд░ рд╕рдВрд╕реНрдХрд░рдг рдЙрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдЬрд╝реЗрдЯреЗрд╕-рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдерд╛ред рдЕрдзреАрд░ рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдирдореВрдирд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рдВрдХрд▓рд┐рдд рд░рд┐рд▓реАрдЬ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд╣реИред



5.1ред makefile



рдЖрдЗрдП рд╢реБрд░реБрдЖрдд рдореЗрдХрдлрд┐рд▓ рд╕реЗ рдХрд░реЗрдВред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛, рдпрд╣ рд╕рд░рд▓ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реЛрдЧрд╛ред



 ZETES_PATH = ../zetes APPLICATION_NAME = Tiny\ Viewer BINARY_NAME = tinyview ENTRY_CLASS = tinyviewer/TinyViewerApplication include $(ZETES_PATH)/common-scripts/globals.mk include $(ZETES_WINGS_PATH)/ZetesWings.mk all: package
      
      







рд╣рдо рд▓рд╛рдЗрди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдХрд░реЗрдВрдЧреЗред рдкрд╣рд▓рд╛ рдХрджрдо ZETES_PATH



рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ Zetes



рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛ APPLICATION_NAME



, рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдорд╛рдирд╡-рдкрдардиреАрдп рдирд╛рдо рд╣реИред рддрдм - BINARY_NAME



- рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдФрд░ ENTRY_CLASS



- "рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ" рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо - рдлрд╝рдВрдХреНрд╢рди public static void main(String... args);



ред рд╡рд░реНрдЧ рдирд╛рдо рд╕реНрд▓реИрд╢ (/) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЕрд╡рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рдпрд╣реА рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд░реНрдЧ рдХреЛ tinyviewer.TinyViewerApplication



рдХрд╣рд╛ tinyviewer.TinyViewerApplication



ред



рдЕрдЧрд▓реА рджреЛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ - рдХрдиреЗрдХреНрд╢рди, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, "рдорд╛рдВрд╕" рдХреА - рдЕрд╕реЗрдВрдмрд▓реА рдЗрдВрдЬрди рдХреЛ рдЬрд╝реЗрдЯреЗрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рд╣рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдореЗрдХрдлрд╛рдЗрд▓ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рд╢рд╛рдорд┐рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдкрд╣рд▓реА - globals.mk



- рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ, рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рдирд┐рдпрдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, ZetesWings.mk



рдлрд╝рд╛рдЗрд▓ - ZetesWings рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред ZetesHands рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдХреНрд░рдорд╢рдГ рдЗрд╕рдХреЗ рдореЗрдХрдлрд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдЧреЗред



рдЕрдЧрд▓рд╛ рдореВрд▓ рдирд┐рдпрдо рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдПрдХ рдЬрдЯрд┐рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдХреБрдЫ рдЙрдиреНрдирдд рдЪрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдХреЗ рдореВрд▓ рдирд┐рдпрдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдмрд╕ рдкреИрдХреЗрдЬ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рдПрдХ рдирд┐рдпрдо рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕рдВрдЧреНрд░рд╣ (рдпрд╛ рдУрдПрд╕ рдПрдХреНрд╕ рдкрд░, рдПрдХ рдбреАрдПрдордЬреА рдЫрд╡рд┐ рдореЗрдВ) рдореЗрдВ рдкреИрдХ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкреИрдХ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдЖрд╡реЗрджрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ all: app



рд▓рд┐рдЦреЗрдВ all: app



ред



5.2ред рдореБрдЦреНрдп рд╡рд░реНрдЧ



рдЪреВрдВрдХрд┐ ZetesWings рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рджреГрд╢реНрдп рдореЙрдбрд▓ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрд╡реЗрджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рд░ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╡рд░реНрдЧ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛:

  1. ApplicationBase



    рдХрд╛ рдореБрдЦреНрдп рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдкреНрд░рддрд┐ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдЦреНрдд рдЕрд░реНрде рдореЗрдВ рдпрд╣ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕рдореЗрдВ рдПрдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд░рдЦрдирд╛ рднреА рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ ( main



    рдХрд╛рд░реНрдп)
  2. ViewWindowsManagerBase



    рдПрдХ рд╡рд┐рдВрдбреЛ-рд╡реНрдпреВ рдореИрдиреЗрдЬрдореЗрдВрдЯ рдХреНрд▓рд╛рд╕ рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдмрдирд╛рддрд╛ рд╣реИ, рдЙрдирд╕реЗ рд▓рд┐рдВрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИред
  3. MenuConstructorBase



    - рдПрдХ рд╡рд░реНрдЧ рдЬреЛ рдореЗрдиреВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ - рджреЛрдиреЛрдВ рд╡реИрд╢реНрд╡рд┐рдХ (OS X рдореЗрдВ) рдФрд░ рд╡рд┐рдВрдбреЛ рдореЗрдиреВред рдпрд╣ рд╣реЙрдЯ рдЖрдЗрдЯрдо рдХреА рд╕рд╣реА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ / рдЧрд╛рдпрдм рд╣реЛрдиреЗ / рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдиреВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмреЗрд╣рдж рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реИред рд╕реБрдзрд╛рд░ рдХреЗ рд╕рднреА рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдордВрдЪ рд╕реЗ рдореЗрдиреВ рдХреА "рд╕рд╛рдВрд╕реНрдХреГрддрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░рддрд╛" рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ
  4. ViewWindowBase



    - рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рд╕рд╛рдордЧреНрд░реА рджрд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓реА рдЦрд┐рдбрд╝рдХреАред рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдпрд╣ SWT рд╕реЗ Shell



    рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реЗ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ
  5. Document



    - a documentред рд╕рднреА рд╡рд░реНрдгрд┐рдд рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд╛рд░ред getTitle()



    рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рд╢реАрд░реНрд╖рдХ (рд╡рд┐рдВрдбреЛ рд╢реАрд░реНрд╖рдХ рдФрд░ рдореЗрдиреВ рдЖрдЗрдЯрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП) рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ getTitle()



    рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдмрд╛рдзреНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП


рд╕реВрдЪреАрдмрджреНрдз рд╕рднреА рдХрдХреНрд╖рд╛рдПрдВ (рд╕рд░рд▓ Document



рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИрдВ рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдФрд░ рдЕрдм рд╣рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗ рдПрдХ рд╡рд╛рд░рд┐рд╕ рдмрдирд╛рдиреЗ рдФрд░ рдЗрди рд╡рд╛рд░рд┐рд╕реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдмрд╛рдВрдзрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред





рд╕рдВрдмрдВрдзрд┐рдд рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВ - рд╡реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХрдВрдХрд╛рд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдерд╛ - рдПрдХ "рдлрд╝реЙрд░реНрдо" рдЬрд┐рд╕рдореЗрдВ рддреИрдпрд╛рд░-рдХрд┐рдП рдЧрдП рд╡рд░реНрдЧреЛрдВ рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡реЗ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВрдЧреЗ рдЬрд┐рддрдирд╛ рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВред



5.2.1ред ImageDocument





рд╣рдо рдиреАрдЪреЗ-рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░реЗрдВрдЧреЗред рдЪрд▓реЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдЫрд╡рд┐ рд╣реИ рдЬрд┐рд╕реЗ SWT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:



ImageDocument.java
 package tinyviewer; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.widgets.Display; import zetes.wings.abstracts.Document; public class ImageDocument implements Document { private Image image; private String fileName; private static Image loadImage(InputStream stream) throws IOException { try { Display display = Display.getDefault(); ImageData data = new ImageData(stream); if (data.transparentPixel > 0) { return new Image(display, data, data.getTransparencyMask()); } return new Image(display, data); } finally { stream.close(); } } private static Image loadImage(String fileName) throws IOException { return loadImage(new FileInputStream(fileName)); } public ImageDocument(String fileName) throws IOException { this.fileName = fileName; this.image = loadImage(fileName); } public String getTitle() { return fileName; } public Image getImage() { return image; } public void dispose() { if (image != null && !image.isDisposed()) image.dispose(); } @Override protected void finalize() throws Throwable { dispose(); super.finalize(); } }
      
      





рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд▓рдЧрднрдЧ рд╕реНрдкрд╖реНрдЯ рд╣реИред loadImage



рдлрд╝рдВрдХреНрд╢рди рдЫрд╡рд┐ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдФрд░ рдЗрд╕реЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред getTitle()



рдлрд╝рдВрдХреНрд╢рди рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдФрд░ getTitle()



рдЪрд┐рддреНрд░ рд╕рдВрд╕рд╛рдзрди рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИред рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, finalize()



рднреА рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ finalize()



рд╣реИ рддрд╛рдХрд┐ dispose()



рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред



рдЪреВрдБрдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рддрд╕реНрд╡реАрд░ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдХреЛрдИ рднреА рд╕рдВрд╢реЛрдзрд┐рдд рддрд░реАрдХреЗ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВред



5.2.2ред imageView



рдпрд╣ рд╡рд░реНрдЧ рд╕реАрдзреЗ Zetes рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди, рдлрд┐рд░ рднреА, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд┐рдд SWT рдШрдЯрдХ рд╣реИ рдЬреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдЪрд┐рддреНрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред



ImageView.java
 package tinyviewer; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; public class ImageView extends Canvas { Image image = null; Image zoomedImage = null; double zoom = 1.0; public ImageView(Composite arg0, int arg1) { super(arg0, arg1); addPaintListener(new PaintListener() { @Override public void paintControl(PaintEvent e) { draw(e.gc); } }); } protected void draw(GC gc) { if (image != null) { checkZoomedImage(); Point viewSize = getSize(); Point imageSize = new Point(zoomedImage.getBounds().width, zoomedImage.getBounds().height); int xpos = viewSize.x > imageSize.x ? viewSize.x / 2 - imageSize.x / 2 : 0; int ypos = viewSize.y > imageSize.y ? viewSize.y / 2 - imageSize.y / 2 : 0; gc.drawImage(zoomedImage, xpos, ypos); } } public Point desiredSize() { if (image == null) return new Point(1, 1); else return new Point((int)(image.getImageData().width * zoom), (int)(image.getImageData().height * zoom)); } protected void checkZoomedImage() { if (zoomedImage == null || zoomedImage.isDisposed()) { Rectangle bounds = image.getBounds(); zoomedImage = new Image(image.getDevice(), (int)(bounds.width * zoom), (int)(bounds.height * zoom)); GC gc = new GC(zoomedImage); gc.drawImage(image, 0, 0, bounds.width, bounds.height, 0, 0, (int)(bounds.width * zoom), (int)(bounds.height * zoom)); gc.dispose(); } } public void setImage(Image image) { this.image = image; if (zoomedImage != null) zoomedImage.dispose(); this.redraw(); } public Image getImage() { return image; } public void setZoom(double zoom) { this.zoom = zoom; if (zoomedImage != null) zoomedImage.dispose(); this.redraw(); } public double getZoom() { return zoom; } }
      
      





рдЗрд╕рдХреА рд╕рд╛рд░реА рдЬрдЯрд┐рд▓рддрд╛ рдХрдИ рд░реИрдЦрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдЬреЛ рдЫрд╡рд┐ рдХреЛ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рд░рдЦрддреА рд╣реИ рдЕрдЧрд░ рдпрд╣ рдЗрд╕ рдЦрд┐рдбрд╝рдХреА рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИред рдЬрд╝реВрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдЪреАрдЬреЗрдВ - рддрд╕реНрд╡реАрд░ рдХреЛ рдЬрд╝реВрдо рдЗрди / рдЖрдЙрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ - рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдЕрдЧрд░ рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ рдХреЛ рдЗрд╕ рдХрдХреНрд╖рд╛ рдореЗрдВ рдХреЛрдИ рдмрдХрд╡рд╛рд╕ рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрд╕реЗ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреА рд╡рд┐рдирддреА рдХрд░рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдореИрдВ рдЧрд▓рдд рд╣реВрдВред рдХрд╛рд╢, SWT рдХреЛ рдмрд╣реБрдд рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрдИ рдЪреАрдЬреЛрдВ рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рдЕрд░реНрде "рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдкреНрд░рд╣рд╛рд░" рджреНрд╡рд╛рд░рд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдерд╛ред



5.2.3ред ImageViewWindow



рдЪрд▓рд┐рдП рдЕрдЧрд▓реА рдХрдХреНрд╖рд╛ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ - рд╡реНрдпреВ-рд╡рд┐рдВрдбреЛ рдХреНрд▓рд╛рд╕, рдЬреЛ рдЪрд┐рддреНрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд░реНрдЧ ImageView



рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╡рд┐рдВрдбреЛ рдХреЗрд╡рд▓ рдЗрд╕ ImageView



рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдлреНрд░реЗрдо рд╣реЛрдЧреАред



ImageViewWindow.java
 package tinyviewer; import java.util.HashSet; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.DropTarget; import org.eclipse.swt.dnd.DropTargetAdapter; import org.eclipse.swt.dnd.FileTransfer; import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.events.ControlEvent; import org.eclipse.swt.events.ControlListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Shell; import org.eclipse.wb.swt.SWTResourceManager; import zetes.wings.base.ViewWindowBase; public class ImageViewWindow extends ViewWindowBase<ImageDocument> { private ScrolledComposite scrolledComposite; private DropTarget scrolledCompositeDropTarget, imageViewDropTarget; private ImageView imageView; private HashSet<DropTargetAdapter> dropTargetAdapters = new HashSet<DropTargetAdapter>(); public void addDropTargetListener(DropTargetAdapter dropTargetAdapter) { dropTargetAdapters.add(dropTargetAdapter); if (imageViewDropTarget != null && !imageViewDropTarget.isDisposed()) { scrolledCompositeDropTarget.addDropListener(dropTargetAdapter); imageViewDropTarget.addDropListener(dropTargetAdapter); } } public void removeDropTargetListener(DropTargetAdapter dropTargetAdapter) { dropTargetAdapters.remove(dropTargetAdapter); if (imageViewDropTarget != null && !imageViewDropTarget.isDisposed()) { scrolledCompositeDropTarget.removeDropListener(dropTargetAdapter); imageViewDropTarget.removeDropListener(dropTargetAdapter); } } /** * Create contents of the window. * * @wbp.parser.entryPoint */ @Override protected Shell constructShell() { Shell shell = new Shell(SWT.TITLE | SWT.CLOSE | SWT.MIN | SWT.MAX | SWT.RESIZE | SWT.BORDER | SWT.DOUBLE_BUFFERED); shell.setBackground(SWTResourceManager.getColor(SWT.COLOR_BLACK)); shell.setMinimumSize(new Point(150, 200)); shell.setImages(new Image[] { SWTResourceManager.getImage(ImageViewWindow.class, "/tinyviewer/wingphotos16.png"), // Necessary in Windows (for taskbar) SWTResourceManager.getImage(ImageViewWindow.class, "/tinyviewer/wingphotos64.png"), // Necessary in Windows (for Alt-Tab) SWTResourceManager.getImage(ImageViewWindow.class, "/tinyviewer/wingphotos512.png") // Necessary in OS X }); shell.setLayout(new FillLayout(SWT.HORIZONTAL)); scrolledComposite = new ScrolledComposite(shell, SWT.H_SCROLL | SWT.V_SCROLL | SWT.NO_BACKGROUND); scrolledComposite.setExpandHorizontal(true); scrolledComposite.setExpandVertical(true); imageView = new ImageView(scrolledComposite, SWT.NONE); imageView.setBounds(0, 0, 200, 127); imageView.setVisible(false); imageView.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK)); // Drop targets scrolledCompositeDropTarget = new DropTarget(scrolledComposite, DND.DROP_MOVE); scrolledCompositeDropTarget.setTransfer(new Transfer[] { FileTransfer.getInstance() }); imageViewDropTarget = new DropTarget(imageView, DND.DROP_MOVE); imageViewDropTarget.setTransfer(new Transfer[] { FileTransfer.getInstance() }); for (DropTargetAdapter adapter : dropTargetAdapters) { scrolledCompositeDropTarget.addDropListener(adapter); imageViewDropTarget.addDropListener(adapter); } scrolledComposite.setContent(imageView); scrolledComposite.setMinSize(imageView.desiredSize()); scrolledComposite.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK)); scrolledComposite.addControlListener(new ControlListener() { @Override public void controlResized(ControlEvent arg0) { updateImageViewSize(); } @Override public void controlMoved(ControlEvent arg0) { } }); return shell; } private void updateImageViewSize() { Point desired = imageView.desiredSize(); Point clientAreaSize = new Point(scrolledComposite.getClientArea().width, scrolledComposite.getClientArea().height); int width = Math.max(clientAreaSize.x, desired.x); int height = Math.max(clientAreaSize.y, desired.y); Point newSize = new Point(width, height); Point oldSize = imageView.getSize(); if (!oldSize.equals(newSize)) { imageView.setSize(newSize); } } @Override public void setDocument(ImageDocument document) { super.setDocument(document); imageView.setImage(getDocument().getImage()); scrolledComposite.setMinSize(imageView.desiredSize()); updateImageViewSize(); imageView.setVisible(true); getShell().forceActive(); } @Override public boolean supportsFullscreen() { return true; } @Override public boolean supportsMaximizing() { return true; } }
      
      





рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд░реНрдЧ ViewWindowBase



рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд░реНрдЧ рдХреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЦрд┐рдбрд╝рдХреА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред



рд╡рд┐рдВрдбреЛ рдХреЗ рдХрд╛рд░реНрдп рдЕрддреНрдпрдВрдд рд╕рд░рд▓ рд╣реИрдВ: рд▓реЛрдб рдХреА рдЧрдИ рдЫрд╡рд┐ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ (рдпрд╣ рдЕрддрд┐рднрд╛рд░рд┐рдд setDocument



рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рддрдм рддрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЙрд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдкреНрд░рд╕рдиреНрди рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рд╡рд╣ рдЗрд╕реЗ рдмрдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ DropTarget



рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ DropTarget



, рд╡рд┐рдВрдбреЛ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓ "рдлреЗрдВрдХрдиреЗ" рдХреА рдШрдЯрдирд╛ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддреА рд╣реИред рдлрд╝рд╛рдЗрд▓ рдПрдХ рд╣реА рд╡рд┐рдВрдбреЛ рдореЗрдВ рдирд╣реАрдВ рдЦреБрд▓реЗрдЧреА (рдпрд╣ рдХреЗрд╡рд▓ рдирд┐рд░реНрдмрд╛рдз рд╣реЛрдЧреА), рдЗрд╕реЗ рдПрдХ рдирдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╡рд░реНрдЧ рдирдИ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ addDropTargetListener



рдФрд░ removeDropTargetListener



рд╕рд╛рде рдПрдХ рд╢реНрд░реЛрддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рдж рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред



рдореИрдВ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдпрд╣ рдПрдХрджрдо рд╕рд╣реА рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореВрд▓ рдУрд╡рд░рд░рд╛рдЗрдб рд╡рд┐рдзрд┐рдпрд╛рдВ рдХреНрдпрд╛ рд╣реИрдВ:



constructShell()



рдЙрд╕ рд╕рдордп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм SWT рд╕реЗ Shell



рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдпрд╣ рд╡рд╕реНрддреБ рд╣рдорд╛рд░реА рдЦрд┐рдбрд╝рдХреА рд╣реИред рдПрдХ рд╡рд┐рдзрд┐ рдкрд░ рдПрдиреЛрдЯреЗрд╢рди @wbp.parser.entryPoint



- рдЧреНрд░рд╣рдг рдореЗрдВ SWF рд╡рд┐рдВрдбреЛ рдХреЗ рджреГрд╢реНрдп рдбреНрд░рд╛рдлреНрдЯреНрд╕рдореИрди рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдЬрдм рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди-рд╕рдордп рдореЗрдВ рдЗрд╕рдХреЗ рдЪрд┐рддреНрд░рдордп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ, рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛ рдФрд░ рдмрдЯрди рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ;) (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЦреБрдж рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ - рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ)ред рдпрд╣ рдпрд╣рд╛рдВ рд╣реИ рдХрд┐ рдЖрдВрддрд░рд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред setDocument()



рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдерд╛ред рдФрд░ SupportFullscreen supportsFullscreen()



рдФрд░ SupportMaximizing supportsMaximizing()



рд╡рд┐рдзрд┐рдпрд╛рдБ Zetes рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, false



supportsFullscreen()



рдкрд░ false



рд▓реМрдЯрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ рдУрдПрд╕ рдПрдХреНрд╕ рдкрд░ рддреАрд░ рдХреЗ рд╕рд╛рде рдПрдХ рддреИрдирд╛рддреА рдмрдЯрди рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ рдХрд┐рд╕реА рднреА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ "рдлреБрд▓рд╕реНрдХреНрд░реАрди" рдореЗрдиреВ рдЖрдЗрдЯрдо рдирд╣реАрдВ рдмрдирд╛рдПрдЧрд╛ред



5.2.4ред ImageViewWindowsManager





рдпрд╣ рд╡рд░реНрдЧ рд╡рд┐рдВрдбреЛ рдкреНрд░рдмрдВрдзрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рд╡рд╣ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рддрд╛ рдФрд░ рдирд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред



ImageViewWindowsManager.java
 package tinyviewer; import java.io.IOException; import org.eclipse.swt.dnd.DropTargetAdapter; import org.eclipse.swt.dnd.DropTargetEvent; import org.eclipse.swt.dnd.FileTransfer; import zetes.wings.base.ViewWindowsManagerBase; public class ImageViewWindowsManager extends ViewWindowsManagerBase<ImageDocument, ImageViewWindow> { private DropTargetAdapter viewWindowDropTargetAdapter = new DropTargetAdapter() { public void drop(DropTargetEvent event) { String fileList[] = null; FileTransfer ft = FileTransfer.getInstance(); if (ft.isSupportedType(event.currentDataType)) { fileList = (String[]) event.data; for (int i = 0; i < fileList.length; i++) { ImageDocument document; try { document = new ImageDocument(fileList[i]); openWindowForDocument(document); } catch (IOException e) { e.printStackTrace(); } } } } }; @Override protected ImageViewWindow createViewWindow() { ImageViewWindow vw = new ImageViewWindow(); vw.addDropTargetListener(viewWindowDropTargetAdapter); return vw; } public DropTargetAdapter getViewWindowDropTargetAdapter() { return viewWindowDropTargetAdapter; } }
      
      





рдпрд╣ ImageViewWindow



рд╡рд┐рдВрдбреЛ рдХреНрд▓рд╛рд╕ рдФрд░ ImageDocument



рдбреЙрдХреНрдпреВрдореЗрдВрдЯ ImageDocument



рджреЛрдиреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рдЬреЗрдирд░рд┐рдХ рдХреНрд▓рд╛рд╕ ViewWindowsManagerBase



рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред



рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рдирдХ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рд╣рдордиреЗ рдЬреЛрдбрд╝реА рдереА рд╡рд╣ рдкрд┐рдХреНрдЪрд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ DropTarget



рд▓рд┐рдП рдПрдХ рд╢реНрд░реЛрддрд╛ рдХреА рдирд┐рдпреБрдХреНрддрд┐ рдереА (рдпрд╛рдж рд░рдЦреЗрдВ, рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЗрд╕ рдкрд░ DropTarget



рдереА?)ред рдпрд╣рд╛рдБ, рд╣рдордиреЗ createViewWindow()



рдлрд╝реИрдХреНрдЯрд░реА createViewWindow()



рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдирдИ рд╡рд┐рдВрдбреЛ рдмрдирд╛рддреЗ рд╕рдордп рдбреНрд░реИрдЧ-рдПрди-рдбреНрд░реЙрдк рд╣реИрдВрдбрд▓рд░ рддреБрд░рдВрдд рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЬрд╛рдПред



5.2.5ред TinyViewerMenuConstructor



рдпрд╣ рд╡рд░реНрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдореБрдЦреНрдп рдореЗрдиреВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред рдореЗрдиреВ (рдУрдПрд╕ рдПрдХреНрд╕ рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рджреЛрдиреЛрдВ, рдФрд░ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ рд╡рд┐рдВрдбреЛ) рдХреЗ рд▓рд┐рдП рд╕рднреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдЙрд╕ рдкрд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, Zetes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, SWT рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдзреЗ рдореЗрдиреВ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдЕрддреНрдпрдзрд┐рдХ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реИ ред рдмреЗрд╢рдХ, рдпрд╣рд╛рдБ, рдЕрдлрд╕реЛрд╕, рдПрдХ рдЫрд┐рджреНрд░рдкреВрд░реНрдг рдЕрдореВрд░реНрддрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдИ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рдмрд╛рдж рд╕реЗ SWT рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдШреЗрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рд╕реНрддрд░ рдкрд░ рд╣рдорд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдордЬрдмреВрд░ рд╣реИрдВред



TinyViewerMenuConstructor.java
 package tinyviewer; import zetes.wings.HotKey; import zetes.wings.base.MenuConstructorBase; import zetes.wings.actions.Action; import zetes.wings.actions.Handler; public class TinyViewerMenuConstructor extends MenuConstructorBase<ImageViewWindow> { private Handler<ImageViewWindow> fileOpenHandler; private Action<ImageViewWindow> openAction; public TinyViewerMenuConstructor(ImageViewWindowsManager viewWindowsManager) { super(viewWindowsManager); openAction = new Action<>("&Open"); openAction.setHotKey(new HotKey(HotKey.MOD1, 'O')); getFileActionCategory().addFirstItem(openAction); } public Handler<ImageViewWindow> getFileOpenHandler() { return fileOpenHandler; } public void setFileOpenHandler(Handler<ImageViewWindow> fileOpenHandler) { this.fileOpenHandler = fileOpenHandler; if (openAction.getHandlers().get(null) == null) { openAction.getHandlers().put(null, fileOpenHandler); } } }
      
      





рдпрд╣ рд╡рд░реНрдЧ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рд╕рд╛рде рдФрд░ рд╡рд┐рдВрдбреЛ рдореИрдиреЗрдЬрд░ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ (рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред рдЪреВрдВрдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдорд╛рд░реА рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдореЗрдВ рджреГрд╢реНрдп рдЦрд┐рдбрд╝рдХреА рд╣реА рд╣реИ, рдФрд░ рдореЗрдиреВ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╣рд╛рдпрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡ рд╣реИ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдХреНрд░рд┐рдп рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рд╡рд╣ рджреГрд╢реНрдп рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ (рдЕрд░реНрдерд╛рдд, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝) рдкрд░ рдХрд┐рд╕реА рднреА рд╣реЗрд░рдлреЗрд░ рдХреЛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рд╣рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдХрд╣реЛ, рдХреЙрдкреА рдХрдорд╛рдВрдб, рддреЛ рд╣рдорд╛рд░реА рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, actionCopy



рдлрд╝рдВрдХреНрд╢рди, рдЬрд┐рд╕реЗ рдореЗрдиреВ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рд╣реИ, рдПрдХ рдмрд╛рд░ рдлрд┐рд░: рдореЗрдиреВ рд╕реНрд╡рдпрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╣рдореЗрд╢рд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд┐рдбрд╝рдХреА рдпрд╛ рдПрдХ рдЦрд┐рдбрд╝рдХреА рдкреНрд░рдмрдВрдзрдХ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, ImageViewWindowsManager



) рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реИ
ред



ZetesWings рдореЗрдВ рдореЗрдиреВ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВред
рдпрд╣рд╛рдБ рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдореЗрдиреВ рдХреЛ ZetesWings рдореЗрдВ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЦреНрдп рд╕реНрддрдВрдн Action



рдХреНрд▓рд╛рд╕ рд╣реИред рдпрд╣ рд╡рд░реНрдЧ рдПрдХ рдореЗрдиреВ рдЖрдЗрдЯрдо рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдПрдХ рд╢реАрд░реНрд╖рдХ ("рд╢реАрд░реНрд╖рдХ"), рдПрдХ рдЧрд░реНрдо рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрди ("рд╣реЙрдЯрдХреЗрдп") рдФрд░ рд╣реИрдВрдбрд▓рд░ ("рд╣реИрдВрдбрд▓рд░") рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдмрд╛рдж рд╡рд╛рд▓реЗ рдХреЛ рдПрдХ Map



рд░реВрдк рдореЗрдВ рд╕реМрдВрдкрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдХреБрдВрдЬрд┐рдпрд╛рдВ ViewWindow



ред рдмрд╛рдд рд╕рд░рд▓ рд╣реИред рдЬрдм рдпрд╣ рдпрд╛ рдЙрд╕ рд╡рд┐рдВрдбреЛ рдХреЛ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдкрдиреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╣реИрдВрдбрд▓рд░ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╡рд┐рдВрдбреЛрдЬрд╝ ( null



рдХреБрдВрдЬреА рд╡рд╛рд▓реЗ) рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╣реИрдВрдбрд▓рд░ рддрдм рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рд╕рдХреНрд░рд┐рдп рд╡рд┐рдВрдбреЛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ (рдУрдПрд╕ рдПрдХреНрд╕ рдореЗрдВ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдПрдХ рдореЗрдиреВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рд╡рд┐рдВрдбреЛ рдирд╣реАрдВ рд╣реИ)ред



рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдпрд╣реА рд╣реИред рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдореЗрдиреВ рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рджрд┐рдП рдЧрдП рд╡рд┐рдВрдбреЛ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрд╣рд▓реЗ рдЦреЛрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИрдВрдбрд▓рд░ рдЦреЛрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рджреЛрдиреЛрдВ рд╣реИрдВрдбрд▓рд░ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИрдВ, рддреЛ рдореЗрдиреВ рдЖрдЗрдЯрдо рдмрд╕ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдкрд╛рджрди рддрддреНрд╡ рдирд╣реАрдВ рд╣реИрдВ, "рдХреЙрдкреА" рдХрдорд╛рдВрдб рдЕрд░реНрдерд╣реАрди рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдХреЛрдИ рд╡рд┐рдВрдбреЛ рди рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдЕрд░реНрдерд╣реАрди рд╣реИ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, "рдУрдкрди")ред рдЙрд╕реА рд╕рдордп, рдПрдХ "рд╣реИрдВрдбрд▓рд░" (рдпрд╛рдиреА Handler



рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ) рдХреЗрд╡рд▓ рдПрдХ рд╢реНрд░реЛрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдЬреИрд╕реЗ рдХрд┐ isEnabled()



, isVisible()



, isChecked()



ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдХреЗ рд╕рд╛рде рдПрдХреНрд╢рди рд╣реЗрдбрд░ рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ (рдПрдХ рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реЗрдбрд░ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдЕрдкрдирд╛ getTitle()



ред



TinyViewerMenuConstructor



рдмрдирд╛рддреЗ рд╕рдордп рдореБрдЦреНрдп рдореЗрдиреВ рдХреЗ рд▓рд┐рдП Action



рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рдЧреИрд░-рдорд╛рдирдХ рддрддреНрд╡ рд╣реИ - "рдУрдкрди"ред рд╣рдо рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ HotKey(HotKey.MOD1, 'O')



рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред MOD1



рдПрдХ рд╕рдВрд╢реЛрдзрдХ рд╣реИ рдЬреЛ OS X рдХреЗ рддрд╣рдд рдХрдорд╛рдВрдб рдХреБрдВрдЬреА рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рддрд╣рдд рдирд┐рдпрдВрддреНрд░рдгред рджреЛрдиреЛрдВ рдкрд░рдВрдкрд░рд╛рдУрдВ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ Ctrl рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреАрдмреЛрд░реНрдб рд╢реЙрд░реНрдЯрдХрдЯ, рд╕реАрдПрдордбреА рдХреЗ рд╕рд╛рде рдУрдПрд╕ рдПрдХреНрд╕ рдореЗрдВ рджрдмрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред



5.2.6ред TinyViewerApplication





рд╣рдорд╛рд░реА рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдЕрдВрддрд┐рдо (рдФрд░ рдореБрдЦреНрдп) TinyViewerApplication



рдЕрдиреБрдкреНрд░рдпреЛрдЧ TinyViewerApplication



ред рдпрд╣ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╡рд░реНрдЧреЛрдВ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рд╕рд╛рде рд╣реА, рдпрд╣ AboutBox



рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, DefaultAboutBox



) рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЬреЛ "рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ" рд╡рд┐рдВрдбреЛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред



TinyViewerApplication.java
 package tinyviewer; import java.io.IOException; import java.util.ArrayList; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Shell; import zetes.wings.base.ApplicationBase; import zetes.wings.DefaultAboutBox; import zetes.wings.actions.Handler; public class TinyViewerApplication extends ApplicationBase<DefaultAboutBox, ImageDocument, ImageViewWindow, TinyViewerMenuConstructor, ImageViewWindowsManager> { @Override public String getTitle() { return "Tiny Viewer"; } @Override public DefaultAboutBox createAboutBox(ImageViewWindow window) { DefaultAboutBox res = new DefaultAboutBox(window); res.setApplicationName(getTitle()); res.setIconResourceName("/tinyviewer/wingphotos64.png"); res.setDescriptionText("A simple image file viewer.\nThis application shows the power of Avian + SWT"); res.setCopyrightText("Copyright \u00a9 2013, Ilya Mizus"); res.setWindowSize(new Point(370, 180)); return res; } @Override public ImageDocument loadFromFile(String fileName) { try { return new ImageDocument(fileName); } catch (IOException e) { e.printStackTrace(); return null; } } private Handler<ImageViewWindow> fileOpenHandler = new Handler<ImageViewWindow>() { @Override public void execute(ImageViewWindow window) { Shell dummyShell = new Shell(Display.getDefault()); FileDialog fileDialog = new FileDialog(dummyShell, SWT.OPEN | SWT.MULTI); fileDialog.setText("Open image"); fileDialog.setFilterNames(new String[] { "Image (*.png; *.bmp; *.jpg; *.jpeg)", "All files" }); fileDialog.setFilterExtensions(new String[] { "*.png; *.bmp; *.jpg; *.jpeg", "*.*" }); String firstFile = fileDialog.open(); if (firstFile != null) { String[] names = fileDialog.getFileNames(); ArrayList<ImageDocument> documents = new ArrayList<ImageDocument>(); // Creating documents for files for (int i = 0; i < names.length; i++) { String fileName = fileDialog.getFilterPath() + "/" + names[i]; try { documents.add(new ImageDocument(fileName)); } catch (IOException e) { // TODO Show a message box here e.printStackTrace(); } } getViewWindowsManager().openWindowsForDocuments(documents.toArray(new ImageDocument[] {})); } dummyShell.dispose(); } }; public TinyViewerApplication() { } @Override public ImageViewWindowsManager createViewWindowsManager() { return new ImageViewWindowsManager(); } @Override public TinyViewerMenuConstructor createMenuConstructor(ImageViewWindowsManager viewWindowsManager) { TinyViewerMenuConstructor menuConstructor = new TinyViewerMenuConstructor(viewWindowsManager); menuConstructor.setFileOpenHandler(fileOpenHandler); return menuConstructor; } @Override public boolean needsAtLeastOneView() { return false; } public static void main(String... args) { new TinyViewerApplication().run(args); } }
      
      





рдпрд╣ рд╡рд░реНрдЧ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ, рд╡рд╣ рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╕реНрддреБ рд╢рд╛рдорд┐рд▓ рд╣реИ fileOpenHandler



, рдЬреЛ "рдУрдкрди" рдореЗрдиреВ рдЖрдЗрдЯрдо рдХрд╛ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИрдВрдбрд▓рд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдореЗрдВ рд╣рдорд╛рд░реЗ "рд╡реИрд╢реНрд╡рд┐рдХ" рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (рдореЗрдиреВ рдбрд┐рдЬрд╝рд╛рдЗрдирд░, рд╡рд┐рдВрдбреЛ рдореИрдиреЗрдЬрд░ рдФрд░ "рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ" рд╡рд┐рдВрдбреЛ) рдХреЗ рд▓рд┐рдП рдХрдИ рдлрд╝реИрдХреНрдЯрд░реА рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВред рдЗрд╕рдиреЗ рдПрдХ рдордиреЛрд░рдВрдЬрдХ рддрд░реАрдХрд╛ рднреА рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ needsAtLeastOneView()



, рдЬрд┐рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдереЛрдбрд╝рд╛ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВ
, Windows Linux . тАФ , , . OS X тАФ , . тАФ . , .



ZetesWings. needsAtLeastOneView()



false



, OS X .



OS X , / (, ). needsAtLeastOneView()



, true



. , . , OS X , .



рдЗрд╕рдХреЗ рд╕рд╛рде, рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рд╣рдорд╛рд░реА рд╕рдореАрдХреНрд╖рд╛ рдХреЛ рдкреВрд░реНрдг рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



5.3ред рд╕рд╣рд╛рдпрдХ рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрди



рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреАред рдпреЗ рдлрд╝рд╛рдЗрд▓реЗрдВ - рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓реЗрдВ - 4 рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ:



  1. src/res



    тАФ src/java



    тАФ Java Java-. 3 SWT :

     shell.setImages(new Image[] { SWTResourceManager.getImage(ImageViewWindow.class, "/tinyviewer/wingphotos16.png"), SWTResourceManager.getImage(ImageViewWindow.class, "/tinyviewer/wingphotos64.png"), SWTResourceManager.getImage(ImageViewWindow.class, "/tinyviewer/wingphotos512.png") });
          
          





  2. win-res



    тАФ , Windows EXE. , , win.rc





    win.rc
     MainIcon ICON "win-res/wingphotos.ico" 1 VERSIONINFO FILEVERSION 0,1,0,0 PRODUCTVERSION 0,1,0,0 BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904E4" BEGIN VALUE "CompanyName", "bigfatbrowncat\0" VALUE "FileDescription", "A tiny multi document photo viewer app" VALUE "FileVersion", "0.1\0" VALUE "InternalName", "TinyViewer\0" VALUE "LegalCopyright", "Ilya Mizus\0" VALUE "OriginalFilename", "tinyviewer.exe\0" VALUE "ProductName", "TinyViewer\0" VALUE "ProductVersion", "0.1\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1251 END END
          
          





  3. osx-bundle



    тАФ .app, OS X ┬лapplication bundle┬╗ . bundle
  4. resources



    - рдУрдПрд╕ рдПрдХреНрд╕ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рддрд╣рдд рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдУрдПрд╕ рдПрдХреНрд╕ рдХреЗ рддрд╣рдд, рдЙрдиреНрд╣реЗрдВ рдмрдВрдбрд▓ рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд┐рдд рд╕рдВрд╕рд╛рдзрди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╡рд░реНрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╡реЗрджрди рд╕реЗ рд╕реБрд▓рдн рд╣реИрдВ WinLinMacApi



    ред рдпрд╣ рдлрд╝реЛрд▓реНрдбрд░ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреНрдп рдЬрд╝реЗрдЯреЗрд╕-рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ ред




5.4ред рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рд▓реЙрдиреНрдЪ



рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдВрдбреНрд░реЙрдЗрдб рдХреНрд▓рд╛рд╕рдкрд╛рде рдФрд░ рдПрд╡рд┐рдпрди рдХреНрд▓рд╛рд╕рдкрд╛рде рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрд╕реЗрдВрдмрд▓реА рдирд┐рд░реНрджреЗрд╢ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░ рд╣реИрдВ, рдЬреЛ рдЬрд╝реЗрдЯреЗрд╕-рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╣реИрдВ ред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рд╕рд╡рд╛рд▓ рдкреВрдЫреЗрдВ, рдореИрдВ рдЦреБрд╢реА рдХреЗ рд╕рд╛рде рдЬрд╡рд╛рдм рджреВрдВрдЧрд╛ред



6. рдирд┐рд╖реНрдХрд░реНрд╖



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЕрдкрдиреЗ рд╣реГрджрдп рдХреЗ рдиреАрдЪреЗ рд╕реЗ рдЙрди рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдзреИрд░реНрдп рд╣реИ (рдФрд░ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд░реБрдЪрд┐ рд╣реИ) рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдПред рдореБрдЭреЗ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╖рдп рди рдХреЗрд╡рд▓ рдореЗрд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИ, рдЙрддрдирд╛ рд╣реА рдЕрдзрд┐рдХ рдЙрддреНрд╕рд╛рд╣ рд╣реИред



рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг рдмрд╣реБрдд рд╕реНрдерд┐рд░ рд╣реИ рдФрд░, рд╢рд╛рдпрдж, рд╕рд░рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рд╛рд╡рдзрд╛рдиреА рдХреЗ рд╕рд╛рде рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдФрд░ рдмрджрд▓реЗ рдЬрд╛рдПрдВрдЧреЗред рдореИрдВ рд╕реНрд╡рдпрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрдИ рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред



рдХрд┐рд╕реА рднреА рд╕реБрдЭрд╛рд╡ / рд╕рд▓рд╛рд╣ / рдЖрд▓реЛрдЪрдирд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред



7. рд╕рдиреНрджрд░реНрдн







рдЕрдВрдд рдореЗрдВ , рдореИрдВ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдЕрдкрдиреЗ рдорд┐рддреНрд░ рдФрд░ рд╕рд╣рдпреЛрдЧреА рдЬрд╕реНрдЯрдореИрди рдХрд╛ рд╢реБрдХреНрд░рд┐рдпрд╛ рдЕрджрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ , рдЬрд┐рдирдХреА рдорджрдж рдФрд░ рдиреИрддрд┐рдХ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛, рди рддреЛ рдпрд╣ рдХрд╛рдо, рдФрд░ рди рд╣реА рдпрд╣ рд▓реЗрдЦ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдХрднреА рднреА рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЕрдкрдиреА рдкреНрдпрд╛рд░реА рдкрддреНрдиреА рдХреЛ рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬреЛ рди рдХреЗрд╡рд▓ рдЦреБрд╢реА рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рд╢рд╛рдо рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдмрдХрд╡рд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдореЗрд░реЗ рд▓реЗрдЦреЛрдВ рдФрд░ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдХреЙрдорд╛ рдХреА рднреА рдЬрд╛рдВрдЪ рдХрд░рддреА рд╣реИ рдХрд┐ рдореИрдВ рдЙрди рдкрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рднреВрд▓ рдЧрдпрд╛ рд╣реВрдВред



рдЬреЛ рдХреЛрдИ рднреА рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рдкреНрд░рддрд┐ рдЙрджрд╛рд╕реАрди рдирд╣реАрдВ рд╣реИ рдФрд░ рдЬреЛ рдЗрд╕рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдХреГрдкрдпрд╛ рдореЗрд░реЗ рдЧрд┐рдердм -рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЬрд╝реАрдЯреНрд╕ рдФрд░ рдЬрд╝реАрдЯреНрд╕-рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕рд┐рддрд╛рд░реЗ рдбрд╛рд▓реЗрдВрддрд╛рдХрд┐ рдореИрдВ рд╕рдореБрджрд╛рдп рдХреЗ рд╣рд┐рдд рдХреЛ рджреЗрдЦреВрдВред рдЪреВрдВрдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЧреИрд░-рд▓рд╛рднрдХрд╛рд░реА рд╣реИ рдФрд░ рдореЗрд░реЗ рдЙрддреНрд╕рд╛рд╣ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдорд╛рди рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рдореЗрд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рдмреЗрд╢рдХ, рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдХреЛрдб рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИ, рддреЛ рдореИрдВ рдХреЗрд╡рд▓ рдЦреБрд╢ рд░рд╣реВрдВрдЧрд╛!



рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!



All Articles