Hi Michiel,
The XML Editor component is specialized for Formspider IDE application. It has different events from TabbedPanel.
TabbedPanel has PreTabClosed/PostTabClosed events which runs before/after removing a tab from the TabbedPanel.
Here is how you can do it: You may get all tab attributes on preTabClosed event and add them to session;
procedure preTabClosed is
v_closedTabName_tx varchar2(4000);
v_tabbedPanelName_tx varchar2(255) := 'mainPanel';
begin
-- save current tab name
api_session.add('currentTabName',api_tabbedpanel.getcurrenttabname(v_tabbedPanelName_tx));
-- get closed tab name
v_closedTabName_tx := api_tabbedpanel.getclosedtabname(v_tabbedPanelName_tx);
api_session.add('closedTabOrder',
api_tabbedpanel.gettaborder(v_tabbedPanelName_tx,v_closedTabName_tx));
api_session.add('closedTabName', v_closedTabName_tx);
api_session.add('closedTabTitle',
api_tabbedpanel.gettabtitle(v_tabbedPanelName_tx ,v_closedTabName_tx));
api_session.add('closedTabPanelName',
api_tabbedpanel.gettabpanel(v_tabbedPanelName_tx ,v_closedTabName_tx));
api_session.add('closedTabClosable',
api_tabbedpanel.istabclosable(v_tabbedPanelName_tx ,v_closedTabName_tx));
api_session.add('closedTabVisible',
api_tabbedpanel.istabvisible(v_tabbedPanelName_tx ,v_closedTabName_tx));
api_session.add('closedTabVisibleEnabled',
api_tabbedpanel.istabenabled(v_tabbedPanelName_tx ,v_closedTabName_tx));
end;
And add same tab on postTabClosed event using the attributes on session and then show the alert you want;
procedure postTabClosed is
v_closedTabName_tx varchar2(4000);
v_tabbedPanelName_tx varchar2(255) := 'mainPanel';
v_alertName_tx varchar2(255) := 'alert';
begin
-- add the closed tab
v_closedTabName_tx := api_session.getvaluetx('closedTabName');
api_tabbedPanel.addtab(in_tabbedpanelname_tx => v_tabbedPanelName_tx
,in_order_nr => api_session.getvaluenr('closedTabOrder')
,in_tabname_tx => v_closedTabName_tx
,in_title_tx => api_session.getvaluetx('closedTabTitle')
,in_panelname_tx => api_session.getvaluetx('closedTabPanelName')
,in_closable_yn => api_session.getvaluetx('closedTabClosable')
,in_visible_yn => api_session.getvaluetx('closedTabVisible')
,in_enabled_yn => api_session.getvaluetx('closedTabVisibleEnabled'));
-- if the closed tab was the current tab, we have to set the newly added tab as current
if api_session.getvaluetx('currentTabName') = v_closedTabName_tx then
api_tabbedpanel.setcurrenttab(v_tabbedPanelName_tx, v_closedTabName_tx);
end if;
-- show the alert
api_alert.show(v_alertName_tx);
end;
On close event of the alert, you may remove the tab or whatever you want;
procedure alertOnClose is
v_response_nr number;
v_closedTabName_tx varchar2(4000);
v_tabbedPanelName_tx varchar2(255) := 'mainPanel';
v_alertName_tx varchar2(255) := 'alert';
begin
v_closedTabName_tx := api_session.getvaluetx('closedTabName');
v_response_nr := api_alert.getresponse(v_alertName_tx);
case v_response_nr
when api_alert.button1 then -- Yes
null; -- your business logic here
when api_alert.button2 then -- No
api_tabbedpanel.removetab(v_tabbedPanelName_tx, v_closedTabName_tx);
else -- Cancel
null;
end case;
end;
Regards
answered
03 Jul '12, 05:14
Samet Basaran
137●2
accept rate:
24%