Вызвать компонент в субкомпоненте

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
15 messages Options
Reply | Threaded
Open this post in threaded view
|

Вызвать компонент в субкомпоненте

kirand
Такая ситуация.
Имеется компонент MainFrame с горизонтальным меню. Под меню вызывается с помощью render: дочерний компонент (в зависимости от выбранного пункта меню). В дочернем компоненте есть ссылка на добавление некого объекта с помощью формы и мне нужно сделать так, чтобы при нажатии на эту ссылку вызывался нужный компонент, который бы полностью закрывал MainFrame. Но вместо этого, компонент вызывается только в дочернем компоненте.
Получается такая связка (в скобках дан метод, вызвавший компонент):
MainFrame(call)-->PrivatePage(render)-->ProjectCreation(call)

Как сделать так, чтобы ProjectCreation перекрывал MainFrame?

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Вызвать компонент в субкомпоненте

Dennis Schetinin
mainFrame call: projectCreator — кому посылаем #call:, того и заменяем. mainFrame в PrivatePage можно передать параметром при создании. Или я чего-то не понял?

17 ноября 2011 г. 14:24 пользователь kirand <[hidden email]> написал:
Такая ситуация.
Имеется компонент MainFrame с горизонтальным меню. Под меню вызывается с помощью render: дочерний компонент (в зависимости от выбранного пункта меню). В дочернем компоненте есть ссылка на добавление некого объекта с помощью формы и мне нужно сделать так, чтобы при нажатии на эту ссылку вызывался нужный компонент, который бы полностью закрывал MainFrame. Но вместо этого, компонент вызывается только в дочернем компоненте.
Получается такая связка (в скобках дан метод, вызвавший компонент):
MainFrame(call)-->PrivatePage(render)-->ProjectCreation(call)

Как сделать так, чтобы ProjectCreation перекрывал MainFrame?

--
http://groups.google.ru/group/sugr



--
Dennis Schetinin

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Вызвать компонент в субкомпоненте

kirand
Как же я передам MainFrame параметром, если у меня получается наоборот, что PrivatePage - параметр для переменной в вызове render: и меняется от пункта меню. Самого себя передавать самому себе? Не то.

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Вызвать компонент в субкомпоненте

Dennis Schetinin
Тогда я ничего не понимаю :) Может быть, код стоит показать?

17 ноября 2011 г. 21:37 пользователь kirand <[hidden email]> написал:
Как же я передам MainFrame параметром, если у меня получается наоборот, что PrivatePage - параметр для переменной в вызове render: и меняется от пункта меню. Самого себя передавать самому себе? Не то.

--
http://groups.google.ru/group/sugr



--
Dennis Schetinin

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Вызвать компонент в субкомпоненте

vmusulainen-2
In reply to this post by kirand
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: Вызвать компонент в субкомпоненте

kirand
Спасибо. Проблему понял.

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Вызвать компонент в субкомпоненте

Dennis Schetinin
In reply to this post by vmusulainen-2
Я это и пытался написать :)

18 ноября 2011 г. 9:04 пользователь Владимир Мусулайнен <[hidden email]> написал:
Насколько я помню, это типичный вопрос при применении компонентов в
seaside,

Итак, есть главный компонент (MainComponent), в котором рендерится
другой компонент (ChildComponent), в котором есть некие ссылки.
По клику на ссылку нужно вызвать третий компонент (AnotherComponent)
перекрыв MainFrame.
Я все правильно описал?

Если мы сделаем ChildComponent>>call: AnotherComponent,  то
AnotherComponent заменит собой только ChildComponent.
Это нас не устраивает. Значит нужно сделать MainComponent>>call:
AnotherComponent, Верно?

Значит, либо ChildComponent должен знать о MainComponent, либо
MainComponent подписывается на извещения от ChildComponent. И когда
тот пропищит, что у меня кликнули такой-то пункт меню, то вызвать
AnotherComponent.

Подойдет такой вариант?

Владимир Мусулайнен





On Nov 17, 10:37 pm, kirand <[hidden email]> wrote:
> Как же я передам MainFrame параметром, если у меня получается наоборот, что
> PrivatePage - параметр для переменной в вызове render: и меняется от пункта
> меню. Самого себя передавать самому себе? Не то.

--
http://groups.google.ru/group/sugr



--
Dennis Schetinin

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Вызвать компонент в субкомпоненте

Nikolay Kleptsov
На сколько мне ясно посылать сообщение call: нужно от имени mainFrame т.е. в callback добавить код mainFrame call: anatherComponent. Здесь главное кто отправитель сообщения.

18 ноября 2011 г. 12:14 пользователь Dennis Schetinin <[hidden email]> написал:
Я это и пытался написать :)

18 ноября 2011 г. 9:04 пользователь Владимир Мусулайнен <[hidden email]> написал:

Насколько я помню, это типичный вопрос при применении компонентов в
seaside,

Итак, есть главный компонент (MainComponent), в котором рендерится
другой компонент (ChildComponent), в котором есть некие ссылки.
По клику на ссылку нужно вызвать третий компонент (AnotherComponent)
перекрыв MainFrame.
Я все правильно описал?

Если мы сделаем ChildComponent>>call: AnotherComponent,  то
AnotherComponent заменит собой только ChildComponent.
Это нас не устраивает. Значит нужно сделать MainComponent>>call:
AnotherComponent, Верно?

Значит, либо ChildComponent должен знать о MainComponent, либо
MainComponent подписывается на извещения от ChildComponent. И когда
тот пропищит, что у меня кликнули такой-то пункт меню, то вызвать
AnotherComponent.

Подойдет такой вариант?

Владимир Мусулайнен





On Nov 17, 10:37 pm, kirand <[hidden email]> wrote:
> Как же я передам MainFrame параметром, если у меня получается наоборот, что
> PrivatePage - параметр для переменной в вызове render: и меняется от пункта
> меню. Самого себя передавать самому себе? Не то.

--
http://groups.google.ru/group/sugr



--
Dennis Schetinin

--
http://groups.google.ru/group/sugr

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Вызвать компонент в субкомпоненте

kirand
In reply to this post by Dennis Schetinin
Код такой.
MainFraime имеет переменную content для хранения субкомпонента.
Метод MainFrame>>renderContenOn:
renderContentOn: html
html anchor
callback: [ self content: SZPrivatePage new];
with: 'Личная'.
html space.
html anchor
callback: [ self content: SZProjectPage new ];
with: 'Проекты'.
html render: self content
Класс SZPrivatePage содержит переменную project.
Метод SZPrivatePage >>renderContenOn:
renderContentOn: html
...
html anchor
callback: [ self call: SZProjectCreation new ];
with: 'Создать проект...' 
Буду очень признателен, если скажете как поменять код, чтобы вызвать SZProjectCreation из под MainFrame.

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Вызвать компонент в субкомпоненте

kirand
Ошибся. SZPrivatePage  не содержит никаких переменных.

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Вызвать компонент в субкомпоненте

Nikolay Kleptsov
In reply to this post by kirand
Дабавляем в SZPrivatePage переменную экземпляра mainFrame, создаем методы доступа, перед первым использованием компонента инициализируем экземпляром mainFrame. Далее в методе
SZPrivatePage>>renderContentOn:html
    html anchor
         callback: [mainFrame call: SZProjectCreation new]
         ...
Самое главное перед первым использованием экземпляра SZPrivatePage инициализировать переменную mainFrame

18 ноября 2011 г. 13:43 пользователь kirand <[hidden email]> написал:
Код такой.
MainFraime имеет переменную content для хранения субкомпонента.
Метод MainFrame>>renderContenOn:
renderContentOn: html
html anchor
callback: [ self content: SZPrivatePage new];
with: 'Личная'.
html space.
html anchor
callback: [ self content: SZProjectPage new ];
with: 'Проекты'.
html render: self content
Класс SZPrivatePage содержит переменную project.
Метод SZPrivatePage >>renderContenOn:
renderContentOn: html
...
html anchor
callback: [ self call: SZProjectCreation new ];
with: 'Создать проект...' 
Буду очень признателен, если скажете как поменять код, чтобы вызвать SZProjectCreation из под MainFrame.

--
http://groups.google.ru/group/sugr

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Вызвать компонент в субкомпоненте

kirand
Подвисает все на свете...
Что-то не то вы советуете.

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Вызвать компонент в субкомпоненте

kirand
In reply to this post by Nikolay Kleptsov
Как я и говорил, при инициализации MainFrame инициализируется по умолчанию PrivatePage (открывается по умолчанию). И получается бесконечный вызов MainFrame... ))

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Вызвать компонент в субкомпоненте

Nikolay Kleptsov
в методе MainFrame>>initialize на стороне экземпляра добавляем последнюю строку кода
   content mainFrame: self.

18 ноября 2011 г. 14:14 пользователь kirand <[hidden email]> написал:
Как я и говорил, при инициализации MainFrame инициализируется по умолчанию PrivatePage (открывается по умолчанию). И получается бесконечный вызов MainFrame... ))

--
http://groups.google.ru/group/sugr

--
http://groups.google.ru/group/sugr
Reply | Threaded
Open this post in threaded view
|

Re: Вызвать компонент в субкомпоненте

kirand
Ну это уже вроде похоже на правду.
Спасибо, работает.

--
http://groups.google.ru/group/sugr