summaryrefslogtreecommitdiff
path: root/forms
diff options
context:
space:
mode:
authorKurt Zenker <kz@openoffice.org>2009-06-05 09:47:55 +0000
committerKurt Zenker <kz@openoffice.org>2009-06-05 09:47:55 +0000
commitf69c97860cc62e2aad46e9cfb68a643817e8ad4a (patch)
tree28dd9434276da5b6d415359de4676f3d89b5f824 /forms
parent62cd9aa9be35282c94bd140998b182bfdac7c325 (diff)
CWS-TOOLING: integrate CWS dba32b
2009-06-03 14:58:08 +0200 fs r272581 : #i102439# 2009-05-29 13:56:18 +0200 fs r272456 : remove the sub form when the 'add subform' setting changes from <true/> to <false/>, not only its controls 2009-05-29 13:19:27 +0200 fs r272454 : display '(Default)' instead of an empty string when a control has the default font 2009-05-28 20:49:18 +0200 fs r272428 : #i98162# getFirstSelectedValue: do not return reference to a temporary 2009-05-27 15:30:22 +0200 msc r272353 : #102303# 2009-05-26 13:03:06 +0200 fs r272295 : spelling 2009-05-26 12:59:54 +0200 fs r272294 : merge m48 version to get latest cygwin related fixes 2009-05-25 14:02:06 +0200 fs r272239 : remove references to local files, needed for debugging sessions only 2009-05-25 14:01:16 +0200 fs r272238 : #i102021# ensure members such as bNumberFormat are initialized before actually returning them 2009-05-25 13:10:20 +0200 fs r272236 : #i10000# reset ENABLE_EVOAB2 2009-05-22 06:44:45 +0200 oj r272167 : #i99104# add import handler for calc-sett 2009-05-22 06:42:27 +0200 oj r272166 : #i99104# impl NullDate as member 2009-05-22 06:36:22 +0200 oj r272165 : #i99104# handle nulldate from parent model 2009-05-22 06:33:13 +0200 oj r272164 : #i99104# export and import calculation-settings and nulldate 2009-05-22 06:27:50 +0200 oj r272163 : #i99104# export and import calculation-settings and nulldate 2009-05-20 13:29:58 +0200 oj r272118 : #i99911# handle invalid name 2009-05-20 13:28:49 +0200 oj r272117 : #i101261# handle different rowsets 2009-05-20 11:29:55 +0200 msc r272111 : #i100000# 2009-05-20 11:28:27 +0200 msc r272110 : merge in change from dba32a 2009-05-20 11:27:38 +0200 msc r272109 : #102082# CTRL + C does not work 2009-05-20 09:43:36 +0200 oj r272106 : clean up includes 2009-05-20 09:32:15 +0200 oj r272105 : #i99060# merge error resovled now VERTICAL_ALIGN is in both stmt 2009-05-20 08:37:21 +0200 msc r272104 : add workaround for issue #102010# 2009-05-20 08:10:12 +0200 oj r272103 : #i99104# use numberformatkey 2009-05-20 08:07:02 +0200 oj r272102 : #i99104# use column info from rowset 2009-05-20 08:04:43 +0200 oj r272101 : #i102032# use a special column type where prec and scale are the values currently set at the column 2009-05-20 08:03:04 +0200 oj r272100 : #i102032# correct type info, we have to use SQL defined type names 2009-05-19 10:27:02 +0200 oj r272061 : #i99104# export null-date 2009-05-19 08:26:53 +0200 oj r272056 : #i99104# export null-date 2009-05-18 13:15:10 +0200 msc r272014 : add issue #102019# 2009-05-18 11:33:07 +0200 msc r272005 : add issue #102019# 2009-05-18 08:59:45 +0200 msc r271996 : add workaroud for issue #102010# 2009-05-15 10:21:24 +0200 msc r271929 : #101944# 2009-05-11 21:18:30 +0200 fs r271792 : #i99914# 2009-05-08 13:52:06 +0200 oj r271715 : #i96423# remember column span 2009-05-08 11:26:19 +0200 oj r271708 : #i98605# impl new scale mode 2009-05-08 10:33:35 +0200 fs r271706 : SendUserCall: only call into the shape notification routine for UserCall types where this is necessary (performance issue) 2009-05-07 20:52:44 +0200 fs r271698 : outsource ShapeProperty from shapepropertynotifier.hxx 2009-05-07 20:43:33 +0200 fs r271697 : #i99056# use notifyShapePropertyChange, instead of getShapePropertyChangeNotifier - the latter throws if no shape exists, yet 2009-05-07 20:33:58 +0200 fs r271696 : #i99056# +notifyShapePropertyChange: allow notifying chages without checking whether there actually already exists an SvxShape 2009-05-07 16:22:15 +0200 fs r271679 : #i10000# cygwin needs quotes around the classpath 2009-05-07 16:21:37 +0200 fs r271678 : #i10000# cygwin needs quotes around the classpath 2009-05-07 16:01:11 +0200 oj r271677 : #i99914# notify parent handler 2009-05-07 15:54:54 +0200 fs r271676 : #i10000# cygwin needs some quoting 2009-05-07 14:49:48 +0200 oj r271672 : #i99277# quote alias name 2009-05-07 14:48:12 +0200 oj r271671 : #i92538# add ~ in front of type 2009-05-07 14:37:13 +0200 oj r271667 : #i99118# change type from char to varchar 2009-05-07 14:36:23 +0200 oj r271666 : #i99118# clear dest columns when changing to create new table 2009-05-07 13:35:32 +0200 oj r271657 : #i94467# handle type 0 as double as well 2009-05-07 13:20:49 +0200 oj r271655 : i99743# setNull when varchar is no text 2009-05-07 12:58:06 +0200 fs r271651 : initialize the SdrObject's property change notifier after the ctor, if necessary 2009-05-07 11:47:18 +0200 fs r271647 : #i10000# 2009-05-07 10:57:16 +0200 fs r271639 : OPropertyBrowserController::propertyChange: care for the current property state, too, and properly forward it to the UI 2009-05-07 10:18:14 +0200 fs r271636 : onNewComponent: do not ask the map for grid columns, it will throw 2009-05-07 10:09:55 +0200 fs r271634 : #i101623# 2009-05-07 09:53:44 +0200 fs r271631 : #i101622# 2009-05-06 21:55:53 +0200 fs r271615 : #i10000# 2009-05-06 21:10:42 +0200 fs r271611 : #i10000# 2009-05-06 13:11:48 +0200 fs r271583 : #i10000# 2009-05-05 22:29:31 +0200 fs r271559 : proper assertion message 2009-05-05 22:29:03 +0200 fs r271558 : diagnostics 2009-05-05 22:16:16 +0200 fs r271557 : #i10000# 2009-05-05 13:50:32 +0200 fs r271513 : #i10000# 2009-05-05 10:21:50 +0200 fs r271503 : #i10000# 2009-05-05 09:30:26 +0200 fs r271501 : why did those survive the rebase -C step? 2009-05-05 09:18:12 +0200 fs r271500 : #i10000# 2009-05-04 17:08:17 +0200 fs r271475 : CWS-TOOLING: rebase CWS dba32b to trunk@271427 (milestone: DEV300:m47) 2009-05-04 14:51:26 +0200 fs r271456 : line ends 2009-04-30 15:55:27 +0200 fs r271418 : NewURL -> PublicConnectionURL 2009-04-22 21:18:34 +0200 fs r271141 : #i100944# 2009-04-22 09:12:26 +0200 oj r271071 : #i101261# little code change 2009-04-22 09:11:43 +0200 oj r271070 : #i101261# only ask for parameters which aren't set before 2009-04-22 09:11:25 +0200 oj r271069 : #i101261# new grabage container for nodes 2009-04-22 09:11:02 +0200 oj r271068 : #i101261# new grabage container for nodes 2009-04-22 09:10:44 +0200 oj r271067 : #i101261# new grabage container for nodes 2009-04-22 09:10:21 +0200 oj r271066 : #i101261# only ask for parameters which aren't set before 2009-04-22 09:08:24 +0200 oj r271065 : #i101261# only ask for parameters which aren't set before 2009-04-22 09:07:25 +0200 oj r271064 : #i101261# only ask for parameters which aren't set before 2009-04-22 08:49:07 +0200 oj r271062 : #i77501# preview only when needed 2009-04-22 08:45:44 +0200 oj r271061 : #i101261# new prop max rows 2009-04-22 08:44:18 +0200 oj r271060 : #i101261# create dataprovider earlier to avoid the wrong legend in chart 2009-04-22 08:42:48 +0200 oj r271059 : #i101261# handle parameter 2009-04-17 21:00:23 +0200 fs r270954 : #i98350# 2009-04-17 13:54:19 +0200 fs r270942 : #i99565# 2009-04-17 13:51:34 +0200 fs r270940 : #i101153# only localize the (potentially) localizable properties when there really is support at the control model 2009-04-17 11:43:14 +0200 fs r270932 : removed superfluous include 2009-04-17 10:10:15 +0200 fs r270926 : #i10000# 2009-04-17 10:02:36 +0200 fs r270925 : #i10000# 2009-04-17 09:15:13 +0200 fs r270918 : #i99056# some more refactoring of the recently introduced property change notification mechanism for UNO shapes 2009-04-17 09:14:56 +0200 fs r270917 : #i99056# some more refactoring of the recently introduced property change notification mechanism for UNO shapes 2009-04-17 09:13:25 +0200 fs r270915 : #i99056# some more refactoring of the recently introduced property change notification mechanism for UNO shapes 2009-04-17 08:30:34 +0200 fs r270914 : removed unotools/servicehelper.hxx in favour of the (duplicated) comphelper/servicehelper.hxx 2009-04-16 21:05:25 +0200 fs r270903 : #i10000# 2009-04-16 20:43:43 +0200 fs r270902 : #i99056# shape notification outsourced to the SdrObject, this is what all other shape implementations (which only aggregate an SvxShape) have access to, too 2009-04-16 15:57:36 +0200 fs r270891 : #i99056# make SetUnoControlModel virtual 2009-04-16 15:44:02 +0200 fs r270890 : #i99056# let the ScShapeObj notify changes in its Anchor property 2009-04-16 15:36:47 +0200 fs r270889 : #i99056# enable the sheet anchor type property, too 2009-04-16 15:33:45 +0200 fs r270887 : #i99056# shape notification outsourced to the SdrObject, this is what all other shape implementations (which only aggregate an SvxShape) have access to, too 2009-04-15 14:53:13 +0200 fs r270844 : #i10000# 2009-04-15 13:08:29 +0200 fs r270836 : #i10000# 2009-04-15 12:28:14 +0200 fs r270832 : #i10000# 2009-04-15 10:59:14 +0200 fs r270827 : #i10000# 2009-04-15 09:41:08 +0200 oj r270823 : fix issues found with findbugs and pmd 2009-04-14 21:08:04 +0200 fs r270808 : #i99056# implement SheetAnchorType - now the only thing missing to enable it is the proper notification when it is modified 2009-04-14 17:09:00 +0200 fs r270799 : #i99056# implement XServiceInfo for the ScShapeObj 2009-04-14 17:07:55 +0200 fs r270798 : #i99056# implement TextAnchorType, partially implement SheetAnchorType 2009-04-14 15:54:05 +0200 fs r270786 : #i99056# SwXShape: notify changes of the AnchorType property 2009-04-14 15:47:32 +0200 fs r270785 : #i99056# deliver shapepropertynotifier.hxx 2009-04-14 15:46:54 +0200 fs r270784 : diagnostics 2009-04-14 15:08:28 +0200 fs r270781 : #i99056# outsourced the SvxShape's property change notification code into a dedicated class 2009-04-14 14:41:09 +0200 fs r270773 : #i99056# outsourced the SvxShape's property change notification code into a dedicated class 2009-04-14 14:37:23 +0200 fs r270772 : in dtor, remove the properties from the temporary component context 2009-04-14 14:36:34 +0200 fs r270771 : getWeakUnoShape made const 2009-04-14 12:23:08 +0200 oj r270757 : #i101064# add missing braces 2009-04-14 12:21:25 +0200 oj r270756 : #i101065# add braces for gcc 4.3.2 2009-04-14 12:17:45 +0200 oj r270755 : #i101059# add dep for manifest 2009-04-09 12:06:58 +0200 oj r270686 : #i93100# use OptimalSize from control to get height 2009-04-08 09:56:55 +0200 oj r270619 : #i92537# handle calculations in the select columns as well 2009-04-08 09:30:39 +0200 oj r270615 : #i96657# throw error message when the key doesn't have any columns 2009-04-07 12:08:26 +0200 oj r270592 : #i77501# impl preview of the executed report 2009-04-07 12:01:56 +0200 oj r270591 : #i77501# impl preview of the executed report 2009-04-07 11:41:03 +0200 oj r270590 : #i77501# impl preview of the executed report 2009-04-07 11:39:32 +0200 oj r270589 : #i77501# impl preview of the executed report 2009-04-07 11:29:25 +0200 oj r270588 : #i77501# convert dos to unix lineends 2009-04-07 11:28:23 +0200 oj r270587 : #i77501# impl preview of the executed report 2009-04-07 11:16:50 +0200 oj r270586 : #i77501# impl preview of the executed report 2009-04-07 11:16:00 +0200 oj r270585 : #i77501# impl preview of the executed report 2009-04-07 11:15:44 +0200 oj r270584 : #i77501# impl preview of the executed report 2009-04-07 11:15:28 +0200 oj r270583 : #i77501# impl preview of the executed report 2009-04-07 11:15:04 +0200 oj r270582 : #i77501# impl preview of the executed report 2009-04-06 15:38:54 +0200 fs r270559 : merge changes from CWS dba32a herein 2009-04-03 15:56:16 +0200 fs r270494 : ImpSvMEdit::Resize: do multiple iterations, if necessary 2009-04-03 14:35:49 +0200 fs r270487 : #i10000# 2009-04-03 13:17:16 +0200 fs r270476 : #i99056# display geometry information for controls, too 2009-04-03 13:16:37 +0200 fs r270475 : #i99056# better ordering of the geometry properties 2009-04-03 13:16:07 +0200 fs r270473 : #i99056# now that SvxShape supports property change listeners, forward add/remove requests to it 2009-04-03 13:13:18 +0200 fs r270472 : #i99056# at SvxShape, allow for PropertyChangeListeners for Size/Position 2009-04-03 09:29:27 +0200 oj r270456 : #i94571# use correct prop name 2009-04-03 09:14:54 +0200 fs r270451 : merge changes from CWS dba32a herein 2009-04-02 17:00:51 +0200 fs r270424 : better diagnostics 2009-04-02 16:35:19 +0200 fs r270421 : diagnostics 2009-04-02 16:34:50 +0200 fs r270420 : #i99056# mxUnoShape not accessible anymore, use impl_setUnoShape instead 2009-04-02 16:32:48 +0200 fs r270419 : #i99056# make getUnoShape cheaper: keep the pointer to the SvxShape all the time, so there's no need to ask for it in getUnoShape. As a consequence, we will later be able to use the pointer in scenarious where performance (potentially) matters 2009-04-02 16:31:13 +0200 fs r270417 : merge changes from CWS dba32a herein 2009-04-02 16:23:16 +0200 fs r270414 : merge changes from CWS dba32a herein 2009-04-02 14:10:35 +0200 fs r270405 : #i10000# 2009-04-02 14:06:26 +0200 fs r270404 : merge changes from CWS dba32a herein 2009-04-02 14:03:03 +0200 fs r270401 : #i10000# 2009-04-02 13:58:13 +0200 fs r270400 : #i10000# 2009-04-02 12:59:44 +0200 fs r270397 : merge changes from CWS dba32a herein 2009-04-02 12:46:30 +0200 fs r270396 : #i99056# let the form page maintain a mapping between control models and control shapes 2009-04-02 12:44:07 +0200 fs r270395 : merge changes from CWS dba32a herein 2009-04-02 12:42:06 +0200 fs r270394 : merge changes from CWS dba32a herein 2009-04-02 12:35:20 +0200 fs r270393 : #i10000# precompiled header 2009-04-02 12:05:31 +0200 fs r270392 : merge changes from CWS dba32a herein 2009-04-02 12:00:42 +0200 fs r270391 : merge changes from CWS dba32a herein 2009-04-02 11:47:26 +0200 fs r270390 : merge changes from CWS dba32a herein 2009-04-02 11:39:15 +0200 oj r270389 : #i94467# foxpro impl several new types 2009-04-02 11:35:58 +0200 fs r270387 : merge changes from CWS dba32a herein 2009-04-01 14:10:51 +0200 fs r270329 : merge changes from CWS dba32a herein 2009-03-31 17:29:50 +0200 fs r270290 : merge changes from CWS dba32a herein 2009-03-30 14:53:56 +0200 fs r270233 : #i100417# don't set grid column widths to 0, but to <void/> 2009-03-30 12:31:03 +0200 oj r270213 : #i100552# wrong orb used 2009-03-30 12:19:20 +0200 oj r270212 : #i98303# convertlike corrected to sal_Unicode 2009-03-30 11:58:25 +0200 fs r270210 : merge changes from CWS dba32a herein 2009-03-30 11:38:16 +0200 oj r270205 : remove duplicate code from merge 2009-03-30 11:02:27 +0200 fs r270202 : merge changes from CWS dba32a herein 2009-03-30 11:02:19 +0200 fs r270201 : merge changes from CWS dba32a herein 2009-03-30 10:31:26 +0200 oj r270200 : #i100665# only throw exception and do not drop table 2009-03-30 09:36:24 +0200 fs r270195 : assertion text 2009-03-28 20:21:58 +0100 fs r270187 : #ii10000# 2009-03-28 20:19:54 +0100 fs r270186 : removed unused help ids 2009-03-28 20:19:40 +0100 fs r270185 : removed unused help ids 2009-03-28 20:19:10 +0100 fs r270184 : #i100237# +DefaultState/XReset 2009-03-28 00:29:29 +0100 fs r270177 : CWS-TOOLING: rebase CWS dba32b to trunk@270033 (milestone: DEV300:m45) 2009-03-27 22:56:46 +0100 fs r270173 : #i100237# DEFAULT_CHECKED -> DEFAULT_STATE 2009-03-27 22:55:52 +0100 fs r270172 : #i100237# DefaultState property for buttons, enabled only when Toggle=Yes 2009-03-27 22:54:15 +0100 fs r270171 : #i100237# DEFAULT_CHECKED -> DEFAULT_STATE 2009-03-27 22:53:54 +0100 fs r270170 : #i100237# introduce a DefaultState property for buttons, which implies buttongs supporting XReset, which needed some refactoring 2009-03-27 13:31:41 +0100 fs r270152 : ignore output paths 2009-03-27 11:23:44 +0100 fs r270139 : tuned behavior with respect to invalid keys/values 2009-03-27 09:57:14 +0100 fs r270136 : don't allow Double.NaN 2009-03-27 09:56:16 +0100 fs r270135 : talk about Double.NaN 2009-03-26 12:14:30 +0100 fs r270067 : removed unused parameter 2009-03-26 12:14:02 +0100 fs r270066 : removed widening conversion when checking keys 2009-03-26 09:17:34 +0100 fs r270053 : separated the enumerator functionality into a dedicated interface, this way not burdening XMap with it 2009-03-26 09:17:11 +0100 fs r270052 : separated the enumerator functionality into a dedicated interface, this way not burdening XMap with it 2009-03-26 09:16:49 +0100 fs r270051 : separated the enumerator functionality into a dedicated interface, this way not burdening XMap with it 2009-03-25 21:55:20 +0100 fs r270044 : #i100541# properly calculat bNeedScrollBox 2009-03-25 12:56:17 +0100 fs r270019 : renamed the previously introduced error condition 2009-03-25 12:11:48 +0100 fs r270015 : #i100095# when the error messages contain non-trivial details (SQLState/ErrorCode), then always display the 'Details' button 2009-03-25 12:10:05 +0100 fs r270012 : renamed the previously introduced error condition 2009-03-25 12:01:04 +0100 fs r270011 : #i100095# when no address book (or respective profile) can be found, then use a dedicated ErrorCondition 2009-03-25 10:29:07 +0100 fs r270003 : add missing localization 2009-03-25 10:23:12 +0100 fs r270001 : in preparation of #i1000095#: rework the error handling, allow using css.sdb.ErrorCondition values, plus allow propagating the nsresult 2009-03-25 10:21:55 +0100 fs r270000 : in preparation of #i1000095#: rework the error handling, allow using css.sdb.ErrorCondition values, plus allow propagating the nsresult 2009-03-20 23:05:38 +0100 fs r269829 : XMap::getSize removed 2009-03-20 23:05:19 +0100 fs r269828 : changes as suggested by sb 2009-03-20 23:04:56 +0100 fs r269827 : enhanced documentation 2009-03-20 15:31:40 +0100 fs r269815 : changes as suggested by sb 2009-03-20 13:23:52 +0100 oj r269804 : #i92538# correct the zorder that fixedtext is infront of control 2009-03-20 12:59:38 +0100 oj r269801 : #i94571# paraadjust now supports BLOCK 2009-03-20 12:58:11 +0100 oj r269800 : #i94571# export style with data style 2009-03-20 12:57:05 +0100 oj r269799 : #i94571# text align is now paraadjust 2009-03-20 12:37:02 +0100 fs r269797 : enum keys only accepted if they have the exact type, not if they have *any* enum type 2009-03-20 12:28:31 +0100 fs r269794 : some changes requested by sb 2009-03-20 08:52:47 +0100 fs r269780 : doc 2009-03-20 07:37:31 +0100 oj r269779 : #i99913# only notifiy when values are different 2009-03-20 07:36:58 +0100 oj r269778 : #i99913# add undoenv as listener at the dataprovider 2009-03-19 22:52:52 +0100 fs r269771 : added comment 2009-03-19 22:40:06 +0100 fs r269770 : +testEnumeration 2009-03-19 22:39:41 +0100 fs r269769 : implemented enumeration, getKeySet, and getValues. Should be finished now. 2009-03-19 14:01:01 +0100 oj r269743 : #i99913# reset the modified state when selecting an object 2009-03-19 12:19:54 +0100 lla r269739 : #i72390# cleanups 2009-03-19 09:25:27 +0100 fs r269727 : #i10000# 2009-03-18 23:37:02 +0100 fs r269708 : extended checks for value type acceptance 2009-03-18 23:36:41 +0100 fs r269707 : fixed value type checks 2009-03-18 14:59:56 +0100 fs r269678 : initial complex test case for the new css.container.Map implementation 2009-03-18 14:59:24 +0100 fs r269677 : verifyExpectedException moved to base class (in complexlib), and renamed to assureException for consistency 2009-03-18 14:58:35 +0100 fs r269676 : removed unused imports 2009-03-18 14:58:03 +0100 fs r269675 : first implementation of the new css.container.Map service (not completed, yet) 2009-03-18 14:57:17 +0100 fs r269674 : base class for UNO components, freeing you from some repeating work 2009-03-18 14:55:53 +0100 fs r269672 : +assureException: call a given method with given parameters on a given object, ensure that a given exception is thrown by the method implementation 2009-03-18 14:54:58 +0100 fs r269671 : +getComponentContext 2009-03-18 14:54:00 +0100 fs r269670 : isEmpty returns a boolean, not a long 2009-03-18 14:14:43 +0100 oj r269663 : #i99743# now text also supports null 2009-03-18 13:54:14 +0100 oj r269660 : #i99223# remove check for 2 params 2009-03-18 13:33:35 +0100 oj r269659 : #i99060# replace text::ParagraphVertAlign with style::VerticalAlignment 2009-03-18 13:32:18 +0100 oj r269658 : #i99060# don't set void property when void isn't allowed 2009-03-18 13:31:11 +0100 oj r269657 : #i99060# handle vertical alignment 2009-03-18 13:28:28 +0100 oj r269656 : #i99060# remove unused elements from sytle 2009-03-18 09:35:42 +0100 lla r269639 : #i72390# cleanups 2009-03-18 09:31:20 +0100 lla r269638 : #i72390# add ButtonList 2009-03-18 09:30:46 +0100 lla r269637 : #i72390# renamed interface 2009-03-18 09:30:15 +0100 lla r269636 : #i72390# use ButtonList instead of ImageList 2009-03-18 09:29:05 +0100 lla r269635 : #i72390# new ButtonList, cleanups 2009-03-18 09:26:34 +0100 lla r269634 : #i72390# cleanups 2009-03-17 12:21:20 +0100 oj r269590 : #i99222# remove assertion 2009-03-17 12:17:22 +0100 oj r269589 : #i98605# impl scale mode 2009-03-17 12:10:42 +0100 oj r269588 : #i98605# impl scale mode 2009-03-17 11:40:15 +0100 oj r269584 : #i96944# doesn't create equation for shapes 2009-03-17 11:33:16 +0100 oj r269583 : #i96423# switch calc from float to long 2009-03-16 15:19:18 +0100 fs r269550 : #i41930# enable zoom for embedded/outplace documents 2009-03-16 14:25:54 +0100 oj r269542 : #i93734# remove ContextSensitive 2009-03-16 14:21:58 +0100 oj r269541 : #i99274# page header before group header 2009-03-16 14:18:23 +0100 oj r269539 : #i99110# fix value type 2009-03-16 14:14:16 +0100 fs r269537 : line ends 2009-03-16 14:11:06 +0100 fs r269535 : line ends 2009-03-16 14:08:34 +0100 fs r269534 : #i100087# (provided my np): allow for polymorphic types with more than one parameter 2009-03-16 12:30:31 +0100 oj r269521 : compile error 2009-03-16 12:19:12 +0100 oj r269519 : compile error 2009-03-16 10:39:28 +0100 oj r269511 : compile error under linux with swap 2009-03-13 10:33:04 +0100 oj r269462 : CWS-TOOLING: rebase CWS dba32b to trunk@269297 (milestone: DEV300:m43) 2009-03-12 14:37:25 +0100 fs r269416 : interface SequenceOutputStreamTest is unneeded, and pollutes the namespace here :) 2009-03-12 14:35:07 +0100 fs r269414 : not needed 2009-03-12 14:34:15 +0100 fs r269413 : preparation for multiple tests in this module 2009-03-12 14:33:02 +0100 fs r269412 : ShowTargets was moved from module integration.forms to module complexlib 2009-03-12 14:32:48 +0100 fs r269411 : helper class for projects containing multiple complex test cases (and following a certain structure) 2009-03-12 14:00:14 +0100 fs r269407 : proper module after the move 2009-03-12 13:59:10 +0100 fs r269406 : superseded by ../makefile.mk 2009-03-12 13:47:38 +0100 fs r269403 : not needed anymore 2009-03-12 13:45:46 +0100 fs r269402 : moved, in preparation of adding more test cases here, with a common infrastructure 2009-03-12 13:45:07 +0100 fs r269401 : moved from ../ 2009-03-12 13:43:59 +0100 fs r269400 : moved to ./comphelper, in preparation of adding more test cases here, with a common infrastructure 2009-03-12 13:29:47 +0100 oj r269396 : #i99914# set parent on dataprovider 2009-03-12 13:10:35 +0100 oj r269393 : #i99832# check thrown exception and show error 2009-03-12 13:08:10 +0100 fs r269392 : reorganizing tests 2009-03-12 12:52:55 +0100 oj r269390 : #i99118# convert formatkey in numberformat 2009-03-12 12:34:53 +0100 fs r269388 : new API tests 2009-03-12 12:29:05 +0100 fs r269386 : Map not yet committed 2009-03-12 12:28:36 +0100 fs r269385 : oops, forgot the SequenceInputStream during the previous refactoring 2009-03-12 12:12:39 +0100 oj r269384 : #i99104# set HasCategories prop 2009-03-12 12:12:08 +0100 oj r269383 : #i99104# check HasCategories even for internal dataprovider 2009-03-12 12:10:40 +0100 oj r269382 : #i99104# set HasCategories prop 2009-03-12 10:51:49 +0100 fs r269373 : #i10000# exception specifications 2009-03-12 10:49:18 +0100 fs r269372 : #i10000# exception specifications 2009-03-12 10:44:02 +0100 fs r269371 : #i10000# exception specifications 2009-03-12 10:30:55 +0100 fs r269368 : refactored the UNO service registration in this module, using the helper classes provided by comphelper itself, so you have less effort when extending the list of to-be-registered components 2009-03-12 10:30:37 +0100 fs r269367 : module-local includes 2009-03-12 07:05:54 +0100 oj r269357 : #i99104# database dataprovider doesn't need dataranges and diagramdata 2009-03-11 10:58:28 +0100 oj r269306 : #i99911# check if name of the report is a valid file name 2009-03-11 10:03:23 +0100 oj r269299 : #i99666# the report is new when the HierarchicalDocumentName is empty 2009-03-10 11:32:45 +0100 oj r269258 : #i99221# use fallback for language 2009-03-10 10:48:40 +0100 oj r269255 : #i99433# now use OStringBuffer 2009-03-10 10:36:21 +0100 fs r269252 : initial version of (X)Map 2009-03-10 09:52:23 +0100 oj r269246 : #i99433# now use OStringBuffer 2009-03-10 08:56:13 +0100 oj r269240 : #i99655# patch applied 2009-03-09 07:35:33 +0100 lla r269058 : #i10000# wrong variable assignment fixed 2009-03-06 17:20:40 +0100 fs r269030 : some explicit defaults 2009-03-06 17:20:30 +0100 fs r269029 : #i98600# 2009-03-06 14:40:34 +0100 fs r269009 : #i87692# during reload, prevent the document being modified just because of some control content changes ... 2009-03-06 12:52:20 +0100 lla r268997 : #i10000# ambigous problem with FontWeight fixed 2009-03-06 11:39:32 +0100 fs r268989 : #i10000# (approved by pl): use --without-t1-library configure option 2009-03-06 10:55:43 +0100 fs r268986 : #i99953# depends on xmlscript module now 2009-03-06 10:54:04 +0100 fs r268985 : #i99953# also adjust the event names found in dialogs embedded in the forms 2009-03-06 09:53:41 +0100 fs r268977 : #i10000# 2009-03-06 09:30:41 +0100 lla r268973 : #i10000# merge problems 2009-03-05 17:52:34 +0100 fs r268932 : #i98593# for sub components which are actually controlled by a DocumentDefinition (aka XComponentSupplier aka XCommandProcessor), close them by executing the 'close' command, not by suspending/closing the controller (which cannot be intercepted) 2009-03-05 11:41:56 +0100 fs r268889 : default the drop down line count for list/combo boxes to 20 2009-03-05 11:39:10 +0100 fs r268887 : do not display empty error messages 2009-03-02 10:13:57 +0100 lla r268639 : #i91541# CWS rebase m41 to m42 2009-03-02 09:06:27 +0100 lla r268635 : #i10000# add ';' to strings 2009-02-26 11:18:00 +0100 fs r268492 : reportdesign depends on REPORTBUILDER, not REPORTDESIGN 2009-02-26 10:11:38 +0100 lla r268489 : CWS-TOOLING: rebase CWS dba32b to trunk@268395 (milestone: DEV300:m42) 2009-02-26 09:04:11 +0100 lla r268488 : CWS-TOOLING: rebase CWS dba32b to trunk@268395 (milestone: DEV300:m42) 2009-02-24 12:09:13 +0100 lla r268392 : #i91541# #i91542# cleanups 2009-02-24 08:08:06 +0100 lla r268382 : merge all dba32a changes into dba32b 2009-02-24 07:14:55 +0100 lla r268381 : merge all dba32a changes into dba32b 2009-02-23 21:44:28 +0100 fs r268377 : oops ... don't tamper with m_aListSourceValues at the end of loadData 2009-02-23 20:57:05 +0100 fs r268376 : #i98162# don't hold the values as strings, but as ORowSetValue, this way preserving their type, and being agnostic to different result/rowset implementations doing different to-string-conversations 2009-02-23 20:55:44 +0100 fs r268375 : getObject: throwFunctionNotSupportedException, instead of silently returning NULL 2009-02-23 20:55:20 +0100 fs r268374 : #i98162# some more supported types 2009-02-23 20:54:43 +0100 fs r268373 : #i98162# +operator != 2009-02-20 09:35:39 +0100 fs r268306 : #i99422# for a font, display the font name, the style, and the size 2009-02-20 09:33:45 +0100 fs r268305 : #i99422# in the property browser, FONT supersedes CHARFONTNAME: the aggregated FormComponentHandler displays them more nicely now 2009-02-19 16:12:06 +0100 fs r268293 : #i99372# recognize DataType::FLOAT as numeric 2009-02-19 15:43:12 +0100 fs r268291 : #i99415# 2009-02-19 15:40:15 +0100 fs r268290 : #i99242# lcl_firstFocussableControl: take disabled controls into account 2009-02-19 15:34:36 +0100 fs r268289 : #i99396# properly decode the base name of the URL when using it as title 2009-02-19 15:19:05 +0100 fs r268287 : #i98247#
Diffstat (limited to 'forms')
-rw-r--r--forms/qa/integration/forms/ShowTargets.java103
-rw-r--r--forms/qa/makefile.mk4
-rw-r--r--forms/source/component/Button.cxx161
-rw-r--r--forms/source/component/Button.hxx51
-rw-r--r--forms/source/component/CheckBox.cxx2
-rw-r--r--forms/source/component/DatabaseForm.cxx40
-rw-r--r--forms/source/component/FormComponent.cxx22
-rw-r--r--forms/source/component/ListBox.cxx363
-rw-r--r--forms/source/component/ListBox.hxx25
-rw-r--r--forms/source/component/RadioButton.cxx6
-rw-r--r--forms/source/component/refvaluecomponent.cxx10
-rw-r--r--forms/source/component/refvaluecomponent.hxx15
-rw-r--r--forms/source/helper/makefile.mk4
-rw-r--r--forms/source/helper/resettable.cxx101
-rw-r--r--forms/source/inc/FormComponent.hxx3
-rw-r--r--forms/source/inc/frm_strings.hxx2
-rw-r--r--forms/source/inc/property.hrc2
-rw-r--r--forms/source/inc/resettable.hxx75
-rw-r--r--forms/source/inc/togglestate.hxx43
-rw-r--r--forms/source/misc/property.cxx2
20 files changed, 702 insertions, 332 deletions
diff --git a/forms/qa/integration/forms/ShowTargets.java b/forms/qa/integration/forms/ShowTargets.java
deleted file mode 100644
index 3c747adfb2bc..000000000000
--- a/forms/qa/integration/forms/ShowTargets.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: ShowTargets.java,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-package integration.forms;
-
-/**
- *
- * @author fs93730
- */
-public class ShowTargets
-{
- /** Creates a new instance of ShowTargets */
- public ShowTargets()
- {
- }
-
- public static void main( String[] args )
- {
- System.out.println( "possible targets (* denotes a test case which requires user interaction):" );
- System.out.println( " run" );
-
- for ( int i = 0; i < args.length; ++i )
- {
- // filter
- if ( args[i].equals( "TestCase" ) )
- continue;
- if ( args[i].equals( "TestSkeleton" ) )
- continue;
-
- String completePotentialClassName = args[i].replace( '/', '.' );
-
- // get the class
- Class potentialTestClass = null;
- try { potentialTestClass = Class.forName( completePotentialClassName ); }
- catch( java.lang.ClassNotFoundException e )
- {
- continue;
- }
-
- // see if it is derived from complexlib.ComplexTestCase
- Class superClass = potentialTestClass.getSuperclass();
- while ( superClass != null )
- {
- if ( superClass.getName().equals( "complexlib.ComplexTestCase" ) )
- {
- if ( isInteractiveTest( potentialTestClass ) )
- System.out.print( "* " );
- else
- System.out.print( " " );
- System.out.println( "run_" + args[i] );
- }
- superClass = superClass.getSuperclass();
- }
- }
- }
-
- /** determines if the test denoted by a given Class is an interactive test
- */
- static private boolean isInteractiveTest( Class testClass )
- {
- java.lang.reflect.Method interactiveTestMethod = null;
- try { interactiveTestMethod = testClass.getMethod( "isInteractiveTest", new Class[]{} ); }
- catch( Exception e ) { }
-
- if ( interactiveTestMethod != null )
- {
- try
- {
- Boolean result = (Boolean)interactiveTestMethod.invoke( null, new Object[]{} );
- return result.booleanValue();
- }
- catch( Exception e ) { }
- }
- return false;
- }
-}
diff --git a/forms/qa/makefile.mk b/forms/qa/makefile.mk
index 7be518dc063b..822f67e1bb46 100644
--- a/forms/qa/makefile.mk
+++ b/forms/qa/makefile.mk
@@ -56,7 +56,7 @@ JARCOMPRESS = TRUE
# --- Runner Settings ----------------------------------------------
# classpath and argument list
-RUNNER_CLASSPATH = -cp $(CLASSPATH)$(PATH_SEPERATOR)$(SOLARBINDIR)$/OOoRunner.jar$(PATH_SEPERATOR)$(CLASSPATH)$(PATH_SEPERATOR)$(SOLARBINDIR)$/ConnectivityTools.jar
+RUNNER_CLASSPATH = -cp "$(CLASSPATH)$(PATH_SEPERATOR)$(SOLARBINDIR)$/OOoRunner.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/ConnectivityTools.jar"
RUNNER_ARGS = org.openoffice.Runner -TestBase java_complex
.END
@@ -75,7 +75,7 @@ ALL: ALLDEP
.IF "$(BUILD_QADEVOOO)" == "YES"
show_targets:
- +@java $(RUNNER_CLASSPATH) integration.forms.ShowTargets $(foreach,i,$(JAVAFILES) $(i:s/.\$///:s/.java//))
+ +@java $(RUNNER_CLASSPATH) complexlib.ShowTargets $(foreach,i,$(JAVAFILES) $(i:s/.\$///:s/.java//))
run:
+$(COPY) integration$/forms$/*.props $(CLASSDIR)$/$(PACKAGE) && java $(RUNNER_CLASSPATH) $(RUNNER_ARGS) -sce forms_all.sce
diff --git a/forms/source/component/Button.cxx b/forms/source/component/Button.cxx
index 38b1a0376a76..8907dcd82712 100644
--- a/forms/source/component/Button.cxx
+++ b/forms/source/component/Button.cxx
@@ -30,14 +30,18 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_forms.hxx"
+
#include "Button.hxx"
+
+#include <com/sun/star/awt/XVclWindowPeer.hpp>
+
+#include <comphelper/streamsection.hxx>
+#include <comphelper/basicio.hxx>
+#include <tools/diagnose_ex.h>
#include <tools/debug.hxx>
#include <tools/urlobj.hxx>
-#include <vos/mutex.hxx>
#include <vcl/svapp.hxx>
-#include <comphelper/streamsection.hxx>
-#include <comphelper/basicio.hxx>
-#include <com/sun/star/awt/XVclWindowPeer.hpp>
+#include <vos/mutex.hxx>
//.........................................................................
namespace frm
@@ -71,16 +75,40 @@ InterfaceRef SAL_CALL OButtonModel_CreateInstance(const Reference<XMultiServiceF
OButtonModel::OButtonModel(const Reference<XMultiServiceFactory>& _rxFactory)
:OClickableImageBaseModel( _rxFactory, VCL_CONTROLMODEL_COMMANDBUTTON, FRM_SUN_CONTROL_COMMANDBUTTON )
// use the old control name for compatibility reasons
+ ,m_aResetHelper( *this, m_aMutex )
+ ,m_eDefaultState( STATE_NOCHECK )
{
DBG_CTOR( OButtonModel, NULL );
m_nClassId = FormComponentType::COMMANDBUTTON;
}
//------------------------------------------------------------------
+Any SAL_CALL OButtonModel::queryAggregation( const Type& _type ) throw(RuntimeException)
+{
+ Any aReturn = OClickableImageBaseModel::queryAggregation( _type );
+ if ( !aReturn.hasValue() )
+ aReturn = OButtonModel_Base::queryInterface( _type );
+ return aReturn;
+}
+
+//------------------------------------------------------------------
+Sequence< Type > OButtonModel::_getTypes()
+{
+ return ::comphelper::concatSequences(
+ OClickableImageBaseModel::_getTypes(),
+ OButtonModel_Base::getTypes()
+ );
+}
+
+//------------------------------------------------------------------
OButtonModel::OButtonModel( const OButtonModel* _pOriginal, const Reference<XMultiServiceFactory>& _rxFactory )
:OClickableImageBaseModel( _pOriginal, _rxFactory )
+ ,m_aResetHelper( *this, m_aMutex )
+ ,m_eDefaultState( _pOriginal->m_eDefaultState )
{
DBG_CTOR( OButtonModel, NULL );
+ m_nClassId = FormComponentType::COMMANDBUTTON;
+
implInitializeImageURL();
}
@@ -93,12 +121,13 @@ OButtonModel::~OButtonModel()
//------------------------------------------------------------------------------
void OButtonModel::describeFixedProperties( Sequence< Property >& _rProps ) const
{
- BEGIN_DESCRIBE_PROPERTIES( 5, OClickableImageBaseModel )
- DECL_PROP1(BUTTONTYPE, FormButtonType, BOUND);
- DECL_PROP1(DISPATCHURLINTERNAL, sal_Bool, BOUND);
- DECL_PROP1(TARGET_URL, ::rtl::OUString, BOUND);
- DECL_PROP1(TARGET_FRAME, ::rtl::OUString, BOUND);
- DECL_PROP1(TABINDEX, sal_Int16, BOUND);
+ BEGIN_DESCRIBE_PROPERTIES( 6, OClickableImageBaseModel )
+ DECL_PROP1( BUTTONTYPE, FormButtonType, BOUND );
+ DECL_PROP1( DEFAULT_STATE, sal_Int16, BOUND );
+ DECL_PROP1( DISPATCHURLINTERNAL, sal_Bool, BOUND );
+ DECL_PROP1( TARGET_URL, ::rtl::OUString, BOUND );
+ DECL_PROP1( TARGET_FRAME, ::rtl::OUString, BOUND );
+ DECL_PROP1( TABINDEX, sal_Int16, BOUND );
END_DESCRIBE_PROPERTIES();
}
@@ -205,6 +234,118 @@ void OButtonModel::read(const Reference<XObjectInputStream>& _rxInStream) throw
}
}
+//--------------------------------------------------------------------
+void SAL_CALL OButtonModel::disposing()
+{
+ m_aResetHelper.disposing();
+ OClickableImageBaseModel::disposing();
+}
+
+//--------------------------------------------------------------------
+void SAL_CALL OButtonModel::reset() throw (RuntimeException)
+{
+ if ( !m_aResetHelper.approveReset() )
+ return;
+
+ impl_resetNoBroadcast_nothrow();
+
+ m_aResetHelper.notifyResetted();
+}
+
+//--------------------------------------------------------------------
+void SAL_CALL OButtonModel::addResetListener( const Reference< XResetListener >& _listener ) throw (RuntimeException)
+{
+ m_aResetHelper.addResetListener( _listener );
+}
+
+//--------------------------------------------------------------------
+void SAL_CALL OButtonModel::removeResetListener( const Reference< XResetListener >& _listener ) throw (RuntimeException)
+{
+ m_aResetHelper.removeResetListener( _listener );
+}
+
+//--------------------------------------------------------------------
+void SAL_CALL OButtonModel::getFastPropertyValue( Any& _rValue, sal_Int32 _nHandle ) const
+{
+ switch ( _nHandle )
+ {
+ case PROPERTY_ID_DEFAULT_STATE:
+ _rValue <<= (sal_Int16)m_eDefaultState;
+ break;
+
+ default:
+ OClickableImageBaseModel::getFastPropertyValue( _rValue, _nHandle );
+ break;
+ }
+}
+
+//--------------------------------------------------------------------
+void SAL_CALL OButtonModel::setFastPropertyValue_NoBroadcast( sal_Int32 _nHandle, const Any& _rValue ) throw (Exception)
+{
+ switch ( _nHandle )
+ {
+ case PROPERTY_ID_DEFAULT_STATE:
+ {
+ sal_Int16 nDefaultState( (sal_Int16)STATE_NOCHECK );
+ OSL_VERIFY( _rValue >>= nDefaultState );
+ m_eDefaultState = (ToggleState)nDefaultState;
+ impl_resetNoBroadcast_nothrow();
+ }
+ break;
+
+ default:
+ OClickableImageBaseModel::setFastPropertyValue_NoBroadcast( _nHandle, _rValue );
+ break;
+ }
+}
+
+//--------------------------------------------------------------------
+sal_Bool SAL_CALL OButtonModel::convertFastPropertyValue( Any& _rConvertedValue, Any& _rOldValue, sal_Int32 _nHandle, const Any& _rValue ) throw (IllegalArgumentException)
+{
+ sal_Bool bModified = sal_False;
+ switch ( _nHandle )
+ {
+ case PROPERTY_ID_DEFAULT_STATE:
+ bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, (sal_Int16)m_eDefaultState );
+ break;
+
+ default:
+ bModified = OClickableImageBaseModel::convertFastPropertyValue( _rConvertedValue, _rOldValue, _nHandle, _rValue );
+ break;
+ }
+ return bModified;
+}
+
+//--------------------------------------------------------------------
+Any OButtonModel::getPropertyDefaultByHandle( sal_Int32 _nHandle ) const
+{
+ Any aDefault;
+ switch ( _nHandle )
+ {
+ case PROPERTY_ID_DEFAULT_STATE:
+ aDefault <<= (sal_Int16)STATE_NOCHECK;
+ break;
+
+ default:
+ aDefault = OClickableImageBaseModel::getPropertyDefaultByHandle( _nHandle );
+ break;
+ }
+ return aDefault;
+}
+
+//--------------------------------------------------------------------
+void OButtonModel::impl_resetNoBroadcast_nothrow()
+{
+ try
+ {
+ setPropertyValue( PROPERTY_STATE, getPropertyValue( PROPERTY_DEFAULT_STATE ) );
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+}
+
//==================================================================
// OButtonControl
//==================================================================
diff --git a/forms/source/component/Button.hxx b/forms/source/component/Button.hxx
index 038f5b1e8aec..5bbb7f387f85 100644
--- a/forms/source/component/Button.hxx
+++ b/forms/source/component/Button.hxx
@@ -32,13 +32,19 @@
#define _FRM_BUTTON_HXX_
#include "clickableimage.hxx"
+#include "togglestate.hxx"
+#include "formnavigation.hxx"
+#include "resettable.hxx"
+
#include <com/sun/star/awt/MouseEvent.hpp>
#include <com/sun/star/lang/EventObject.hpp>
#include <com/sun/star/awt/ActionEvent.hpp>
#include <com/sun/star/awt/XActionListener.hpp>
#include <com/sun/star/awt/XButton.hpp>
+#include <com/sun/star/form/XReset.hpp>
#include <com/sun/star/beans/PropertyChangeEvent.hpp>
-#include "formnavigation.hxx"
+
+#include <cppuhelper/implbase1.hxx>
//.........................................................................
namespace frm
@@ -48,12 +54,20 @@ namespace frm
//==================================================================
// OButtonModel
//==================================================================
-class OButtonModel
- :public OClickableImageBaseModel
+typedef ::cppu::ImplHelper1 < ::com::sun::star::form::XReset
+ > OButtonModel_Base;
+class OButtonModel :public OClickableImageBaseModel
+ ,public OButtonModel_Base
{
public:
DECLARE_DEFAULT_LEAF_XTOR( OButtonModel );
+ // UNO
+ DECLARE_UNO3_AGG_DEFAULTS( OButtonModel, OClickableImageBaseModel );
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& _rType ) throw(::com::sun::star::uno::RuntimeException);
+
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type> _getTypes();
+
// ::com::sun::star::lang::XServiceInfo
IMPLEMENTATION_NAME(OButtonModel);
virtual StringSequence SAL_CALL getSupportedServiceNames() throw();
@@ -63,13 +77,44 @@ public:
virtual void SAL_CALL write(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectOutputStream>& _rxOutStream) throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL read(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectInputStream>& _rxInStream) throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
+ // XReset
+ virtual void SAL_CALL reset( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addResetListener( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XResetListener >& aListener ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeResetListener( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XResetListener >& aListener ) throw (::com::sun::star::uno::RuntimeException);
+
// OControlModel's property handling
virtual void describeFixedProperties(
::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property >& /* [out] */ _rProps
) const;
+ // XPropertySet and friends
+ virtual void SAL_CALL getFastPropertyValue(::com::sun::star::uno::Any& rValue, sal_Int32 nHandle) const;
+ virtual void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue )
+ throw (::com::sun::star::uno::Exception);
+ virtual sal_Bool SAL_CALL convertFastPropertyValue(
+ ::com::sun::star::uno::Any& _rConvertedValue, ::com::sun::star::uno::Any& _rOldValue, sal_Int32 _nHandle, const ::com::sun::star::uno::Any& _rValue )
+ throw (::com::sun::star::lang::IllegalArgumentException);
+ virtual ::com::sun::star::uno::Any getPropertyDefaultByHandle( sal_Int32 nHandle ) const;
+
+ // OComponentHelper
+ virtual void SAL_CALL disposing();
+
protected:
DECLARE_XCLONEABLE();
+
+private:
+ void impl_resetNoBroadcast_nothrow();
+
+ using ::cppu::OPropertySetHelper::getFastPropertyValue;
+
+private:
+ ResetHelper m_aResetHelper;
+
+ // <properties>
+ ToggleState m_eDefaultState; // the default check state
+ // </properties>
+protected:
+ using OClickableImageBaseModel::disposing;
};
//==================================================================
diff --git a/forms/source/component/CheckBox.cxx b/forms/source/component/CheckBox.cxx
index a8086d39b597..8e66ebc60ab6 100644
--- a/forms/source/component/CheckBox.cxx
+++ b/forms/source/component/CheckBox.cxx
@@ -209,7 +209,7 @@ void SAL_CALL OCheckBoxModel::read(const Reference<stario::XObjectInputStream>&
break;
}
setReferenceValue( sReferenceValue );
- setDefaultChecked( static_cast< CheckState >( nDefaultChecked ) );
+ setDefaultChecked( static_cast< ToggleState >( nDefaultChecked ) );
// Nach dem Lesen die Defaultwerte anzeigen
if ( getControlSource().getLength() )
diff --git a/forms/source/component/DatabaseForm.cxx b/forms/source/component/DatabaseForm.cxx
index 21e3be3c4820..142f0f249b36 100644
--- a/forms/source/component/DatabaseForm.cxx
+++ b/forms/source/component/DatabaseForm.cxx
@@ -65,6 +65,7 @@
#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
#include <com/sun/star/util/XCancellable.hpp>
#include <com/sun/star/util/XURLTransformer.hpp>
+#include <com/sun/star/util/XModifiable2.hpp>
#include <comphelper/basicio.hxx>
#include <comphelper/container.hxx>
@@ -143,6 +144,41 @@ namespace frm
//.........................................................................
//==================================================================
+//= DocumentModifyGuard
+//==================================================================
+class DocumentModifyGuard
+{
+public:
+ DocumentModifyGuard( const Reference< XInterface >& _rxFormComponent )
+ :m_xDocumentModify( getXModel( _rxFormComponent ), UNO_QUERY )
+ {
+ OSL_ENSURE( m_xDocumentModify.is(), "DocumentModifyGuard::DocumentModifyGuard: no document, or no XModifiable2!" );
+ impl_changeModifiableFlag_nothrow( false );
+ }
+ ~DocumentModifyGuard()
+ {
+ impl_changeModifiableFlag_nothrow( true );
+ }
+
+private:
+ void impl_changeModifiableFlag_nothrow( const bool _enable )
+ {
+ try
+ {
+ if ( m_xDocumentModify.is() )
+ _enable ? m_xDocumentModify->enableSetModified() : m_xDocumentModify->disableSetModified();
+ }
+ catch( const Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+ }
+
+private:
+ Reference< XModifiable2 > m_xDocumentModify;
+};
+
+//==================================================================
//= OFormSubmitResetThread
//=-----------------------------------------------------------------
//= submitting and resetting html-forms asynchronously
@@ -2941,6 +2977,10 @@ void ODatabaseForm::reload_impl(sal_Bool bMoveToFirst, const Reference< XInterac
if (!isLoaded())
return;
+ DocumentModifyGuard aModifyGuard( *this );
+ // ensures the document is not marked as "modified" just because we change some control's content during
+ // reloading ...
+
EventObject aEvent(static_cast<XWeak*>(this));
{
// only if there is no approve listener we can post the event at this time
diff --git a/forms/source/component/FormComponent.cxx b/forms/source/component/FormComponent.cxx
index f0cc505d125e..6e700c28f6d8 100644
--- a/forms/source/component/FormComponent.cxx
+++ b/forms/source/component/FormComponent.cxx
@@ -1293,8 +1293,8 @@ OBoundControlModel::OBoundControlModel(
,m_nValuePropertyAggregateHandle( -1 )
,m_nFieldType( DataType::OTHER )
,m_bValuePropertyMayBeVoid( false )
+ ,m_aResetHelper( *this, m_aMutex )
,m_aUpdateListeners(m_aMutex)
- ,m_aResetListeners(m_aMutex)
,m_aFormComponentListeners( m_aMutex )
,m_bInputRequired( sal_True )
,m_pAggPropMultiplexer( NULL )
@@ -1328,8 +1328,8 @@ OBoundControlModel::OBoundControlModel(
,m_nValuePropertyAggregateHandle( _pOriginal->m_nValuePropertyAggregateHandle )
,m_nFieldType( DataType::OTHER )
,m_bValuePropertyMayBeVoid( _pOriginal->m_bValuePropertyMayBeVoid )
+ ,m_aResetHelper( *this, m_aMutex )
,m_aUpdateListeners( m_aMutex )
- ,m_aResetListeners( m_aMutex )
,m_aFormComponentListeners( m_aMutex )
,m_xValidator( _pOriginal->m_xValidator )
,m_bInputRequired( sal_True )
@@ -1521,8 +1521,8 @@ void OBoundControlModel::disposing()
// notify all our listeners
com::sun::star::lang::EventObject aEvt( static_cast< XWeak* >( this ) );
- m_aResetListeners.disposeAndClear( aEvt );
m_aUpdateListeners.disposeAndClear( aEvt );
+ m_aResetHelper.disposing();
// disconnect from our database column
// TODO: could we replace the following 5 lines with a call to impl_disconnectDatabaseColumn_noNotify?
@@ -2482,26 +2482,20 @@ void OBoundControlModel::resetNoBroadcast()
//-----------------------------------------------------------------------------
void OBoundControlModel::addResetListener(const Reference<XResetListener>& l) throw (RuntimeException)
{
- m_aResetListeners.addInterface(l);
+ m_aResetHelper.addResetListener( l );
}
//-----------------------------------------------------------------------------
void OBoundControlModel::removeResetListener(const Reference<XResetListener>& l) throw (RuntimeException)
{
- m_aResetListeners.removeInterface(l);
+ m_aResetHelper.removeResetListener( l );
}
//-----------------------------------------------------------------------------
void OBoundControlModel::reset() throw (RuntimeException)
{
- cppu::OInterfaceIteratorHelper aIter(m_aResetListeners);
- EventObject aResetEvent(static_cast<XWeak*>(this));
- sal_Bool bContinue = sal_True;
- while ( aIter.hasMoreElements() && bContinue )
- bContinue = static_cast< XResetListener* >( aIter.next() )->approveReset( aResetEvent );
-
- if (!bContinue)
- return;
+ if ( !m_aResetHelper.approveReset() )
+ return;
ControlModelLock aLock( *this );
@@ -2616,7 +2610,7 @@ void OBoundControlModel::reset() throw (RuntimeException)
aLock.release();
- m_aResetListeners.notifyEach( &XResetListener::resetted, aResetEvent );
+ m_aResetHelper.notifyResetted();
}
// -----------------------------------------------------------------------------
diff --git a/forms/source/component/ListBox.cxx b/forms/source/component/ListBox.cxx
index f7bc39fa1b89..ec953f66c6f6 100644
--- a/forms/source/component/ListBox.cxx
+++ b/forms/source/component/ListBox.cxx
@@ -54,27 +54,22 @@
#include <com/sun/star/sdb/CommandType.hpp>
/** === end UNO includes === **/
-#include <connectivity/dbtools.hxx>
-#include <connectivity/formattedcolumnvalue.hxx>
-#include <connectivity/dbconversion.hxx>
-
-#include <vcl/svapp.hxx>
-
-#include <unotools/sharedunocomponent.hxx>
-
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-
#include <comphelper/basicio.hxx>
#include <comphelper/container.hxx>
#include <comphelper/numbers.hxx>
#include <comphelper/listenernotification.hxx>
-
+#include <connectivity/dbtools.hxx>
+#include <connectivity/formattedcolumnvalue.hxx>
+#include <connectivity/dbconversion.hxx>
#include <cppuhelper/queryinterface.hxx>
-
#include <rtl/logfile.hxx>
+#include <tools/debug.hxx>
+#include <tools/diagnose_ex.h>
+#include <unotools/sharedunocomponent.hxx>
+#include <vcl/svapp.hxx>
#include <algorithm>
+#include <functional>
//.........................................................................
@@ -94,14 +89,61 @@ namespace frm
using namespace ::com::sun::star::form::binding;
using namespace ::dbtools;
- //==================================================================
- //= ItemEvent
- //==================================================================
+ using ::connectivity::ORowSetValue;
+
+ //==============================================================================
+ //= helper
+ //==============================================================================
+ namespace
+ {
+ //--------------------------------------------------------------------------
+ struct RowSetValueToString : public ::std::unary_function< ORowSetValue, ::rtl::OUString >
+ {
+ ::rtl::OUString operator()( const ORowSetValue& _value ) const
+ {
+ return _value.getString();
+ }
+ };
+
+ //--------------------------------------------------------------------------
+ struct AppendRowSetValueString : public ::std::unary_function< ::rtl::OUString, void >
+ {
+ AppendRowSetValueString( ::rtl::OUString& _string )
+ :m_string( _string )
+ {
+ }
+
+ void operator()( const ::rtl::OUString _append )
+ {
+ m_string += _append;
+ }
+
+ private:
+ ::rtl::OUString& m_string;
+ };
+
+ //--------------------------------------------------------------------------
+ Sequence< ::rtl::OUString > lcl_convertToStringSequence( const ValueList& _values )
+ {
+ Sequence< ::rtl::OUString > aStrings( _values.size() );
+ ::std::transform(
+ _values.begin(),
+ _values.end(),
+ aStrings.getArray(),
+ RowSetValueToString()
+ );
+ return aStrings;
+ }
+ }
+
+ //==============================================================================
+ //= ItemEventDescription
+ //==============================================================================
typedef ::comphelper::EventHolder< ItemEvent > ItemEventDescription;
- //==================================================================
+ //==============================================================================
//= OListBoxModel
- //==================================================================
+ //==============================================================================
//------------------------------------------------------------------
InterfaceRef SAL_CALL OListBoxModel_CreateInstance(const Reference<XMultiServiceFactory>& _rxFactory) throw (RuntimeException)
{
@@ -146,8 +188,8 @@ namespace frm
,m_aListRowSet( getContext() )
,m_eListSourceType( _pOriginal->m_eListSourceType )
,m_aBoundColumn( _pOriginal->m_aBoundColumn )
- ,m_aListSourceSeq( _pOriginal->m_aListSourceSeq )
- ,m_aValueSeq( _pOriginal->m_aValueSeq )
+ ,m_aListSourceValues( _pOriginal->m_aListSourceValues )
+ ,m_aBoundValues( _pOriginal->m_aBoundValues )
,m_aDefaultSelectSeq( _pOriginal->m_aDefaultSelectSeq )
,m_nNULLPos(-1)
,m_bBoundComponent(sal_False)
@@ -229,11 +271,11 @@ namespace frm
break;
case PROPERTY_ID_LISTSOURCE:
- _rValue <<= m_aListSourceSeq;
+ _rValue <<= lcl_convertToStringSequence( m_aListSourceValues );
break;
case PROPERTY_ID_VALUE_SEQ:
- _rValue <<= m_aValueSeq;
+ _rValue <<= lcl_convertToStringSequence( m_aBoundValues );
break;
case PROPERTY_ID_DEFAULT_SELECT_SEQ:
@@ -266,24 +308,38 @@ namespace frm
_rValue >>= m_eListSourceType;
break;
- case PROPERTY_ID_LISTSOURCE :
- DBG_ASSERT(_rValue.getValueType().equals(::getCppuType(reinterpret_cast<StringSequence*>(NULL))),
- "OListBoxModel::setFastPropertyValue_NoBroadcast : invalid type !" );
- _rValue >>= m_aListSourceSeq;
-
- if (m_eListSourceType == ListSourceType_VALUELIST)
- m_aValueSeq = m_aListSourceSeq;
- else if ( m_xCursor.is() && !hasField() && !hasExternalListSource() )
- // listbox is already connected to a database, and no external list source
- // data source changed -> refresh
- loadData( false );
- break;
+ case PROPERTY_ID_LISTSOURCE:
+ {
+ // extract
+ Sequence< ::rtl::OUString > aListSource;
+ OSL_VERIFY( _rValue >>= aListSource );
+
+ // copy to member
+ ValueList().swap(m_aListSourceValues);
+ ::std::copy(
+ aListSource.getConstArray(),
+ aListSource.getConstArray() + aListSource.getLength(),
+ ::std::insert_iterator< ValueList >( m_aListSourceValues, m_aListSourceValues.end() )
+ );
+
+ // propagate
+ if ( m_eListSourceType == ListSourceType_VALUELIST )
+ {
+ m_aBoundValues = m_aListSourceValues;
+ }
+ else
+ {
+ if ( m_xCursor.is() && !hasField() && !hasExternalListSource() )
+ // listbox is already connected to a database, and no external list source
+ // data source changed -> refresh
+ loadData( false );
+ }
+ }
+ break;
case PROPERTY_ID_VALUE_SEQ :
- DBG_ASSERT(_rValue.getValueType().equals(::getCppuType(reinterpret_cast<StringSequence*>(NULL))),
- "OListBoxModel::setFastPropertyValue_NoBroadcast : invalid type !" );
- _rValue >>= m_aValueSeq;
- break;
+ OSL_ENSURE( false, "ValueItemList is read-only!" );
+ throw PropertyVetoException();
case PROPERTY_ID_DEFAULT_SELECT_SEQ :
DBG_ASSERT(_rValue.getValueType().equals(::getCppuType(reinterpret_cast< Sequence<sal_Int16>*>(NULL))),
@@ -329,12 +385,12 @@ namespace frm
break;
case PROPERTY_ID_LISTSOURCE:
- bModified = tryPropertyValue(_rConvertedValue, _rOldValue, _rValue, m_aListSourceSeq);
+ bModified = tryPropertyValue(_rConvertedValue, _rOldValue, _rValue, lcl_convertToStringSequence( m_aListSourceValues ) );
break;
case PROPERTY_ID_VALUE_SEQ :
- bModified = tryPropertyValue(_rConvertedValue, _rOldValue, _rValue, m_aValueSeq);
- break;
+ OSL_ENSURE( false, "ValueItemList is read-only!" );
+ throw PropertyVetoException();
case PROPERTY_ID_DEFAULT_SELECT_SEQ :
bModified = tryPropertyValue(_rConvertedValue, _rOldValue, _rValue, m_aDefaultSelectSeq);
@@ -435,7 +491,7 @@ namespace frm
_rxOutStream << nAnyMask;
- _rxOutStream << m_aListSourceSeq;
+ _rxOutStream << lcl_convertToStringSequence( m_aListSourceValues );
_rxOutStream << (sal_Int16)m_eListSourceType;
_rxOutStream << aDummySeq;
_rxOutStream << m_aDefaultSelectSeq;
@@ -481,9 +537,9 @@ namespace frm
if (nVersion > 0x0004)
{
DBG_ERROR("OListBoxModel::read : invalid (means unknown) version !");
- m_aListSourceSeq.realloc(0);
+ ValueList().swap(m_aListSourceValues);
m_aBoundColumn <<= (sal_Int16)0;
- m_aValueSeq.realloc(0);
+ ValueList().swap(m_aBoundValues);
m_eListSourceType = ListSourceType_VALUELIST;
m_aDefaultSelectSeq.realloc(0);
defaultCommonProperties();
@@ -588,17 +644,18 @@ namespace frm
// PRE2: list source
::rtl::OUString sListSource;
- // if our list source type is no value list, we need to concatenete
+ // if our list source type is no value list, we need to concatenate
// the single list source elements
- const ::rtl::OUString* pListSourceItem = m_aListSourceSeq.getConstArray();
- sal_Int32 i(0);
- for ( i=0; i<m_aListSourceSeq.getLength(); ++i, ++pListSourceItem )
- sListSource = sListSource + *pListSourceItem;
+ ::std::for_each(
+ m_aListSourceValues.begin(),
+ m_aListSourceValues.end(),
+ AppendRowSetValueString( sListSource )
+ );
// outta here if we don't have all pre-requisites
if ( !xConnection.is() || !sListSource.getLength() )
{
- m_aValueSeq = StringSequence();
+ ValueList().swap(m_aBoundValues);
return;
}
@@ -742,9 +799,7 @@ namespace frm
}
// Anzeige- und Werteliste fuellen
- ::std::vector< ::rtl::OUString > aValueList, aStringList;
- aValueList.reserve(16);
- aStringList.reserve(16);
+ ValueList aDisplayList, aValueList;
sal_Bool bUseNULL = hasField() && !isRequired();
try
@@ -780,23 +835,20 @@ namespace frm
::dbtools::FormattedColumnValue aValueFormatter( getContext(), m_xCursor, xDataField );
// Feld der BoundColumn des ResultSets holen
- Reference< XPropertySet > xBoundField;
- if ((nBoundColumn > 0) && m_xColumn.is())
+ sal_Int32 nBoundColumnType = DataType::SQLNULL;
+ if ( ( nBoundColumn > 0 ) && m_xColumn.is() )
{ // don't look for a bound column if we're not connected to a field
try
{
- xColumns->getByIndex(nBoundColumn) >>= xBoundField;
+ Reference< XPropertySet > xBoundField( xColumns->getByIndex( nBoundColumn ), UNO_QUERY_THROW );
+ OSL_VERIFY( xBoundField->getPropertyValue( ::rtl::OUString::createFromAscii( "Type" ) ) >>= nBoundColumnType );
}
catch( const Exception& )
{
DBG_UNHANDLED_EXCEPTION();
}
}
- m_bBoundComponent = xBoundField.is();
-
- ::std::auto_ptr< ::dbtools::FormattedColumnValue > pBoundFieldFormatter;
- if ( xBoundField.is() )
- pBoundFieldFormatter.reset( new ::dbtools::FormattedColumnValue( getContext(), m_xCursor, xBoundField ) );
+ m_bBoundComponent = ( nBoundColumnType != DataType::SQLNULL );
// Ist die LB an ein Feld gebunden und sind Leereintraege zulaessig
// dann wird die Position fuer einen Leereintrag gemerkt
@@ -804,20 +856,21 @@ namespace frm
RTL_LOGFILE_CONTEXT( aLogContext, "OListBoxModel::loadData: string collection" );
::rtl::OUString aStr;
sal_Int16 entryPos = 0;
- // per definitionem the list cursor is positioned _before_ the first row at the moment
+ ORowSetValue aBoundValue;
+ Reference< XRow > xCursorRow( xListCursor, UNO_QUERY_THROW );
while ( xListCursor->next() && ( entryPos++ < SHRT_MAX ) ) // SHRT_MAX is the maximum number of entries
{
aStr = aValueFormatter.getFormattedValue();
- aStringList.push_back(aStr);
+ aDisplayList.push_back( aStr );
- if ( pBoundFieldFormatter.get() )
+ if ( m_bBoundComponent )
{
- aStr = pBoundFieldFormatter->getFormattedValue();
- aValueList.push_back( aStr );
+ aBoundValue.fill( nBoundColumn + 1, nBoundColumnType, xCursorRow );
+ aValueList.push_back( aBoundValue );
}
- if (bUseNULL && (m_nNULLPos == -1) && !aStr.getLength())
- m_nNULLPos = (sal_Int16)aStringList.size() - 1;
+ if ( bUseNULL && ( m_nNULLPos == -1 ) && !aStr.getLength() )
+ m_nNULLPos = sal_Int16( aDisplayList.size() - 1 );
}
}
break;
@@ -828,11 +881,11 @@ namespace frm
if (xFieldNames.is())
{
StringSequence seqNames = xFieldNames->getElementNames();
- sal_Int32 nFieldsCount = seqNames.getLength();
- const ::rtl::OUString* pustrNames = seqNames.getConstArray();
-
- for (sal_Int32 k=0; k<nFieldsCount; ++k, ++pustrNames)
- aStringList.push_back(*pustrNames);
+ ::std::copy(
+ seqNames.getConstArray(),
+ seqNames.getConstArray() + seqNames.getLength(),
+ ::std::insert_iterator< ValueList >( aDisplayList, aDisplayList.end() )
+ );
}
}
break;
@@ -857,25 +910,16 @@ namespace frm
// NULL eintrag hinzufuegen
if (bUseNULL && m_nNULLPos == -1)
{
- if (m_bBoundComponent)
- aValueList.insert(aValueList.begin(), ::rtl::OUString());
+ if ( m_bBoundComponent )
+ aValueList.insert( aValueList.begin(), ORowSetValue() );
- aStringList.insert(aStringList.begin(), ::rtl::OUString());
+ aDisplayList.insert( aDisplayList.begin(), ORowSetValue( ::rtl::OUString() ) );
m_nNULLPos = 0;
}
- m_aValueSeq.realloc(aValueList.size());
- ::rtl::OUString* pValues = m_aValueSeq.getArray();
- for ( i = 0; i < (sal_Int32)aValueList.size(); ++i, ++pValues)
- *pValues = aValueList[i];
-
- // String-Sequence fuer ListBox erzeugen
- StringSequence aStringSeq(aStringList.size());
- ::rtl::OUString* pStrings = aStringSeq.getArray();
- for ( i = 0; i < (sal_Int32)aStringList.size(); ++i, ++pStrings )
- *pStrings = aStringList[i];
+ m_aBoundValues = aValueList;
- setFastPropertyValue(PROPERTY_ID_STRINGITEMLIST, makeAny(aStringSeq));
+ setFastPropertyValue( PROPERTY_ID_STRINGITEMLIST, makeAny( lcl_convertToStringSequence( aDisplayList ) ) );
}
//------------------------------------------------------------------------------
@@ -890,19 +934,14 @@ namespace frm
if ( !hasExternalListSource() )
impl_refreshDbEntryList( false );
-
- if ( hasField() )
- m_pBoundFieldFormatter.reset( new ::dbtools::FormattedColumnValue( getContext(), m_xCursor, getField() ) );
}
//------------------------------------------------------------------------------
void OListBoxModel::onDisconnectedDbColumn()
{
- m_pBoundFieldFormatter.reset( NULL );
-
- if (m_eListSourceType != ListSourceType_VALUELIST)
+ if ( m_eListSourceType != ListSourceType_VALUELIST )
{
- m_aValueSeq = StringSequence();
+ ValueList().swap(m_aBoundValues);
m_nNULLPos = -1;
m_bBoundComponent = sal_False;
@@ -914,81 +953,73 @@ namespace frm
}
//------------------------------------------------------------------------------
- StringSequence OListBoxModel::GetCurValueSeq() const
+ ValueList OListBoxModel::impl_getValues() const
{
- StringSequence aCurValues;
+ if ( !m_aBoundValues.empty() )
+ return m_aBoundValues;
- // Aus den selektierten Indizes Werte-Sequence aufbauen
- DBG_ASSERT(m_xAggregateFastSet.is(), "OListBoxModel::GetCurValueSeq : invalid aggregate !");
- if (!m_xAggregateFastSet.is())
- return aCurValues;
-
- Any aTmp = m_xAggregateFastSet->getFastPropertyValue( getValuePropertyAggHandle() );
-
- Sequence<sal_Int16> aSelectSeq; aTmp >>= aSelectSeq;
- const sal_Int16 *pSels = aSelectSeq.getConstArray();
- sal_uInt32 nSelCount = aSelectSeq.getLength();
+ Sequence< ::rtl::OUString > aStringItems( getStringItemList() );
+ ValueList aValues( aStringItems.getLength() );
+ ::std::copy(
+ aStringItems.getConstArray(),
+ aStringItems.getConstArray() + aStringItems.getLength(),
+ aValues.begin()
+ );
- if (nSelCount)
- {
- StringSequence aValues( impl_getValues() );
+ return aValues;
+ }
+ //------------------------------------------------------------------------------
+ ORowSetValue OListBoxModel::getFirstSelectedValue() const
+ {
+ static const ORowSetValue s_aEmptyVaue;
- const ::rtl::OUString *pVals = aValues.getConstArray();
- sal_Int32 nValCnt = aValues.getLength();
+ DBG_ASSERT( m_xAggregateFastSet.is(), "OListBoxModel::getFirstSelectedValue: invalid aggregate!" );
+ if ( !m_xAggregateFastSet.is() )
+ return s_aEmptyVaue;
- if (nSelCount > 1)
- {
- // Einfach- oder Mehrfach-Selektion
- sal_Bool bMultiSel = false;
- const_cast<OListBoxModel*>(this)->OPropertySetAggregationHelper::getFastPropertyValue(PROPERTY_ID_MULTISELECTION) >>= bMultiSel;
- if (bMultiSel)
- nSelCount = 1;
- }
+ Sequence< sal_Int16 > aSelectedIndices;
+ OSL_VERIFY( m_xAggregateFastSet->getFastPropertyValue( getValuePropertyAggHandle() ) >>= aSelectedIndices );
+ if ( !aSelectedIndices.getLength() )
+ // nothing selected at all
+ return s_aEmptyVaue;
- // ist der Eintrag fuer NULL selektiert ?
- // dann leere Selektion liefern
- if (m_nNULLPos != -1 && nSelCount == 1 && pSels[0] == m_nNULLPos)
- nSelCount = 0;
+ if ( ( m_nNULLPos != -1 ) && ( aSelectedIndices[0] == m_nNULLPos ) )
+ // the dedicated "NULL" entry is selected
+ return s_aEmptyVaue;
- aCurValues.realloc(nSelCount);
- ::rtl::OUString *pCurVals = aCurValues.getArray();
+ ValueList aValues( impl_getValues() );
- for (sal_uInt16 i = 0; i < nSelCount; i++)
- {
- if (pSels[i] < nValCnt)
- pCurVals[i] = pVals[pSels[i]];
- }
+ size_t selectedValue = aSelectedIndices[0];
+ if ( selectedValue >= aValues.size() )
+ {
+ OSL_ENSURE( false, "OListBoxModel::getFirstSelectedValue: inconsistent selection/valuelist!" );
+ return s_aEmptyVaue;
}
- return aCurValues;
+
+ return aValues[ selectedValue ];
}
//------------------------------------------------------------------------------
sal_Bool OListBoxModel::commitControlValueToDbColumn( bool /*_bPostReset*/ )
{
// current selektion list
- Any aCurrentValue;
- StringSequence aCurValueSeq = GetCurValueSeq();
- if ( aCurValueSeq.getLength() )
- aCurrentValue <<= aCurValueSeq.getConstArray()[0];
-
- if ( !compare( aCurrentValue, m_aSaveValue ) )
+ const ORowSetValue rCurrentValue( getFirstSelectedValue() );
+ if ( rCurrentValue != m_aSaveValue )
{
- if ( !aCurrentValue.hasValue() )
+ if ( rCurrentValue.isNull() )
m_xColumnUpdate->updateNull();
else
{
try
{
- ::rtl::OUString sNewValue;
- aCurrentValue >>= sNewValue;
- m_xColumnUpdate->updateString( sNewValue );
+ m_xColumnUpdate->updateObject( rCurrentValue.makeAny() );
}
- catch(Exception&)
+ catch ( const Exception& )
{
return sal_False;
}
}
- m_aSaveValue = aCurrentValue;
+ m_aSaveValue = rCurrentValue;
}
return sal_True;
}
@@ -997,37 +1028,41 @@ namespace frm
//------------------------------------------------------------------------------
Any OListBoxModel::translateDbColumnToControlValue()
{
- DBG_ASSERT( m_xAggregateFastSet.is() && m_xAggregateSet.is(), "OListBoxModel::translateDbColumnToControlValue: invalid aggregate !" );
- if ( !m_xAggregateFastSet.is() || !m_xAggregateSet.is() )
- return Any();
-
- OSL_ENSURE( m_pBoundFieldFormatter.get(), "OListBoxModel::translateDbColumnToControlValue: illegal call!" );
- if ( !m_pBoundFieldFormatter.get() )
+ Reference< XPropertySet > xBoundField( getField() );
+ if ( !xBoundField.is() )
+ {
+ OSL_ENSURE( false, "OListBoxModel::translateDbColumnToControlValue: no field? How could that happen?!" );
return Any();
+ }
- Sequence<sal_Int16> aSelSeq;
+ Sequence< sal_Int16 > aSelectionIndicies;
// Bei NULL-Eintraegen Selektion aufheben!
- ::rtl::OUString sValue = m_pBoundFieldFormatter->getFormattedValue();
- OSL_PRECOND( getField() == m_xColumn, "OListBoxModel::translateDbColumnToControlValue: inconsistency!" );
- // m_pBoundFieldFormatter is based on m_xField, and we use m_xColumn to check for wasNull
- // => both should better be the same object ...
- if ( m_xColumn->wasNull() )
+ ORowSetValue aCurrentValue;
+ aCurrentValue.fill( xBoundField->getPropertyValue( PROPERTY_VALUE ) );
+
+ if ( aCurrentValue.isNull() )
{
- m_aSaveValue.clear();
- if (m_nNULLPos != -1)
+ if ( m_nNULLPos != -1 )
{
- aSelSeq.realloc(1);
- aSelSeq.getArray()[0] = m_nNULLPos;
+ aSelectionIndicies.realloc(1);
+ aSelectionIndicies[0] = m_nNULLPos;
}
}
else
{
- m_aSaveValue <<= sValue;
-
- aSelSeq = findValue( impl_getValues(), sValue, m_bBoundComponent );
+ ValueList aValues( impl_getValues() );
+ ValueList::const_iterator curValuePos = ::std::find( aValues.begin(), aValues.end(), aCurrentValue );
+ if ( curValuePos != aValues.end() )
+ {
+ aSelectionIndicies.realloc( 1 );
+ aSelectionIndicies[0] = curValuePos - aValues.begin();
+ }
}
- return makeAny( aSelSeq );
+
+ m_aSaveValue = aCurrentValue;
+
+ return makeAny( aSelectionIndicies );
}
// XReset
@@ -1158,7 +1193,7 @@ namespace frm
aThisEntryIndexes.getConstArray(),
aThisEntryIndexes.getConstArray() + aThisEntryIndexes.getLength(),
::std::insert_iterator< ::std::set< sal_Int16 > >( aSelectionSet, aSelectionSet.begin() )
- );
+ );
}
// copy the indexes to the sequence
diff --git a/forms/source/component/ListBox.hxx b/forms/source/component/ListBox.hxx
index 9aeca0e851e2..60bd63b3712d 100644
--- a/forms/source/component/ListBox.hxx
+++ b/forms/source/component/ListBox.hxx
@@ -46,14 +46,13 @@
#include <com/sun/star/form/XChangeBroadcaster.hpp>
/** === end UNO includes === **/
-#include <vcl/timer.hxx>
-
#include <comphelper/asyncnotification.hxx>
-
+#include <connectivity/FValue.hxx>
#include <cppuhelper/interfacecontainer.hxx>
#include <cppuhelper/implbase1.hxx>
+#include <vcl/timer.hxx>
-#include <memory>
+#include <vector>
namespace dbtools
{
@@ -67,21 +66,21 @@ namespace frm
//==================================================================
//= OListBoxModel
//==================================================================
+typedef ::std::vector< ::connectivity::ORowSetValue > ValueList;
+
class OListBoxModel :public OBoundControlModel
,public OEntryListHelper
,public OErrorBroadcaster
{
- CachedRowSet m_aListRowSet; // the row set to fill the list
- ::std::auto_ptr< ::dbtools::FormattedColumnValue >
- m_pBoundFieldFormatter;
- ::com::sun::star::uno::Any m_aSaveValue;
+ CachedRowSet m_aListRowSet; // the row set to fill the list
+ ::connectivity::ORowSetValue m_aSaveValue;
// <properties>
::com::sun::star::form::ListSourceType m_eListSourceType; // type der list source
::com::sun::star::uno::Any m_aBoundColumn;
- StringSequence m_aListSourceSeq; //
- StringSequence m_aValueSeq; // alle Werte, readonly
+ ValueList m_aListSourceValues;
+ ValueList m_aBoundValues;
::com::sun::star::uno::Sequence<sal_Int16> m_aDefaultSelectSeq; // DefaultSelected
// </properties>
@@ -89,8 +88,7 @@ class OListBoxModel :public OBoundControlModel
sal_Bool m_bBoundComponent : 1;
private:
- // Helper functions
- StringSequence GetCurValueSeq() const;
+ ::connectivity::ORowSetValue getFirstSelectedValue() const;
virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type> _getTypes();
@@ -180,8 +178,7 @@ private:
*/
void impl_refreshDbEntryList( bool _bForce );
- StringSequence
- impl_getValues() const { return m_aValueSeq.getLength() ? m_aValueSeq : getStringItemList(); }
+ ValueList impl_getValues() const;
};
//==================================================================
diff --git a/forms/source/component/RadioButton.cxx b/forms/source/component/RadioButton.cxx
index 78841aa89ecf..cd70d200f376 100644
--- a/forms/source/component/RadioButton.cxx
+++ b/forms/source/component/RadioButton.cxx
@@ -259,7 +259,7 @@ void ORadioButtonModel::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, cons
}
}
- if (nHandle == PROPERTY_ID_DEFAULTCHECKED)
+ if (nHandle == PROPERTY_ID_DEFAULT_STATE)
{
sal_Int16 nValue;
rValue >>= nValue;
@@ -269,7 +269,7 @@ void ORadioButtonModel::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, cons
Any aZero;
nValue = 0;
aZero <<= nValue;
- SetSiblingPropsTo(PROPERTY_DEFAULTCHECKED, aZero);
+ SetSiblingPropsTo(PROPERTY_DEFAULT_STATE, aZero);
}
}
}
@@ -341,7 +341,7 @@ void SAL_CALL ORadioButtonModel::read(const Reference<XObjectInputStream>& _rxIn
}
setReferenceValue( sReferenceValue );
- setDefaultChecked( (CheckState)nDefaultChecked );
+ setDefaultChecked( (ToggleState)nDefaultChecked );
// Nach dem Lesen die Defaultwerte anzeigen
if ( getControlSource().getLength() )
diff --git a/forms/source/component/refvaluecomponent.cxx b/forms/source/component/refvaluecomponent.cxx
index 7a9f71475229..cd6fd6eba04e 100644
--- a/forms/source/component/refvaluecomponent.cxx
+++ b/forms/source/component/refvaluecomponent.cxx
@@ -90,7 +90,7 @@ namespace frm
switch ( _nHandle )
{
case PROPERTY_ID_REFVALUE: _rValue <<= m_sReferenceValue; break;
- case PROPERTY_ID_DEFAULTCHECKED: _rValue <<= (sal_Int16)m_eDefaultChecked; break;
+ case PROPERTY_ID_DEFAULT_STATE: _rValue <<= (sal_Int16)m_eDefaultChecked; break;
case PROPERTY_ID_UNCHECKED_REFVALUE:
OSL_ENSURE( m_bSupportSecondRefValue, "OReferenceValueComponent::getFastPropertyValue: not supported!" );
@@ -117,11 +117,11 @@ namespace frm
OSL_VERIFY( _rValue >>= m_sNoCheckReferenceValue );
break;
- case PROPERTY_ID_DEFAULTCHECKED:
+ case PROPERTY_ID_DEFAULT_STATE:
{
sal_Int16 nDefaultChecked( (sal_Int16)STATE_NOCHECK );
OSL_VERIFY( _rValue >>= nDefaultChecked );
- m_eDefaultChecked = (CheckState)nDefaultChecked;
+ m_eDefaultChecked = (ToggleState)nDefaultChecked;
resetNoBroadcast();
}
break;
@@ -146,7 +146,7 @@ namespace frm
bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, m_sNoCheckReferenceValue );
break;
- case PROPERTY_ID_DEFAULTCHECKED:
+ case PROPERTY_ID_DEFAULT_STATE:
bModified = tryPropertyValue( _rConvertedValue, _rOldValue, _rValue, (sal_Int16)m_eDefaultChecked );
break;
@@ -168,7 +168,7 @@ namespace frm
{
BEGIN_DESCRIBE_PROPERTIES( m_bSupportSecondRefValue ? 3 : 2, OBoundControlModel )
DECL_PROP1( REFVALUE, ::rtl::OUString, BOUND );
- DECL_PROP1( DEFAULTCHECKED, sal_Int16, BOUND );
+ DECL_PROP1( DEFAULT_STATE, sal_Int16, BOUND );
if ( m_bSupportSecondRefValue )
{
DECL_PROP1( UNCHECKED_REFVALUE, ::rtl::OUString, BOUND );
diff --git a/forms/source/component/refvaluecomponent.hxx b/forms/source/component/refvaluecomponent.hxx
index 856c53572432..40745b22764d 100644
--- a/forms/source/component/refvaluecomponent.hxx
+++ b/forms/source/component/refvaluecomponent.hxx
@@ -28,10 +28,11 @@
*
************************************************************************/
-#ifndef EFORMS2_FORMS_SOURCE_COMPONENT_REFVALUECOMPONENT_HXX
-#define EFORMS2_FORMS_SOURCE_COMPONENT_REFVALUECOMPONENT_HXX
+#ifndef FORMS_SOURCE_COMPONENT_REFVALUECOMPONENT_HXX
+#define FORMS_SOURCE_COMPONENT_REFVALUECOMPONENT_HXX
#include "FormComponent.hxx"
+#include "togglestate.hxx"
/** === begin UNO includes === **/
/** === end UNO includes === **/
@@ -41,8 +42,6 @@ namespace frm
{
//........................................................................
- enum CheckState { STATE_NOCHECK = 0, STATE_CHECK = 1, STATE_DONTKNOW = 2 };
-
//====================================================================
//= OReferenceValueComponent
//====================================================================
@@ -54,7 +53,7 @@ namespace frm
// <properties>
::rtl::OUString m_sReferenceValue; // the reference value to use for data exchange
::rtl::OUString m_sNoCheckReferenceValue; // the reference value to be exchanged when the control is not checked
- CheckState m_eDefaultChecked; // the default check state
+ ToggleState m_eDefaultChecked; // the default check state
// </properties>
sal_Bool m_bSupportSecondRefValue; // do we support the SecondaryRefValue property?
@@ -65,8 +64,8 @@ namespace frm
const ::rtl::OUString& getNoCheckReferenceValue() const { return m_sNoCheckReferenceValue; }
- CheckState getDefaultChecked() const { return m_eDefaultChecked; }
- void setDefaultChecked( CheckState _eChecked ) { m_eDefaultChecked = _eChecked; }
+ ToggleState getDefaultChecked() const { return m_eDefaultChecked; }
+ void setDefaultChecked( ToggleState _eChecked ) { m_eDefaultChecked = _eChecked; }
protected:
OReferenceValueComponent(
@@ -109,5 +108,5 @@ namespace frm
} // namespace frm
//........................................................................
-#endif // EFORMS2_FORMS_SOURCE_COMPONENT_REFVALUECOMPONENT_HXX
+#endif // FORMS_SOURCE_COMPONENT_REFVALUECOMPONENT_HXX
diff --git a/forms/source/helper/makefile.mk b/forms/source/helper/makefile.mk
index 4c2d68fd639e..5739d1fcb6d0 100644
--- a/forms/source/helper/makefile.mk
+++ b/forms/source/helper/makefile.mk
@@ -1,3 +1,4 @@
+
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -50,7 +51,8 @@ INCPRE+=$(SOLARINCDIR)$/offuh
SLOFILES= $(SLO)$/formnavigation.obj \
$(SLO)$/controlfeatureinterception.obj \
$(SLO)$/urltransformer.obj \
- $(SLO)$/windowstateguard.obj
+ $(SLO)$/windowstateguard.obj \
+ $(SLO)$/resettable.obj \
# --- Targets ----------------------------------
diff --git a/forms/source/helper/resettable.cxx b/forms/source/helper/resettable.cxx
new file mode 100644
index 000000000000..3c67dfa5e46e
--- /dev/null
+++ b/forms/source/helper/resettable.cxx
@@ -0,0 +1,101 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_forms.hxx"
+
+#include "resettable.hxx"
+
+/** === begin UNO includes === **/
+/** === end UNO includes === **/
+
+#include <cppuhelper/weak.hxx>
+
+//........................................................................
+namespace frm
+{
+//........................................................................
+
+ /** === begin UNO using === **/
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::XInterface;
+ using ::com::sun::star::uno::UNO_QUERY;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::UNO_SET_THROW;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::uno::makeAny;
+ using ::com::sun::star::uno::Sequence;
+ using ::com::sun::star::uno::Type;
+ using ::com::sun::star::form::XResetListener;
+ using ::com::sun::star::lang::EventObject;
+ /** === end UNO using === **/
+
+ //====================================================================
+ //= ResetHelper
+ //====================================================================
+ //--------------------------------------------------------------------
+ void ResetHelper::addResetListener( const Reference< XResetListener >& _listener )
+ {
+ m_aResetListeners.addInterface( _listener );
+ }
+
+ //--------------------------------------------------------------------
+ void ResetHelper::removeResetListener( const Reference< XResetListener >& _listener )
+ {
+ m_aResetListeners.removeInterface( _listener );
+ }
+
+ //--------------------------------------------------------------------
+ bool ResetHelper::approveReset()
+ {
+ ::cppu::OInterfaceIteratorHelper aIter( m_aResetListeners );
+ EventObject aResetEvent( m_rParent );
+
+ sal_Bool bContinue = sal_True;
+ while ( aIter.hasMoreElements() && bContinue )
+ bContinue = static_cast< XResetListener* >( aIter.next() )->approveReset( aResetEvent );
+
+ return bContinue;
+ }
+
+ //--------------------------------------------------------------------
+ void ResetHelper::notifyResetted()
+ {
+ EventObject aResetEvent( m_rParent );
+ m_aResetListeners.notifyEach( &XResetListener::resetted, aResetEvent );
+ }
+
+ //--------------------------------------------------------------------
+ void ResetHelper::disposing()
+ {
+ EventObject aEvent( m_rParent );
+ m_aResetListeners.disposeAndClear( aEvent );
+ }
+
+//........................................................................
+} // namespace frm
+//........................................................................
diff --git a/forms/source/inc/FormComponent.hxx b/forms/source/inc/FormComponent.hxx
index 9329ca92ba14..05c8ad587902 100644
--- a/forms/source/inc/FormComponent.hxx
+++ b/forms/source/inc/FormComponent.hxx
@@ -36,6 +36,7 @@
#include "property.hrc"
#include "property.hxx"
#include "propertybaghelper.hxx"
+#include "resettable.hxx"
#include "services.hxx"
#include "windowstateguard.hxx"
@@ -648,8 +649,8 @@ private:
::com::sun::star::uno::Type m_aValuePropertyType;
bool m_bValuePropertyMayBeVoid;
+ ResetHelper m_aResetHelper;
::cppu::OInterfaceContainerHelper m_aUpdateListeners;
- ::cppu::OInterfaceContainerHelper m_aResetListeners;
::cppu::OInterfaceContainerHelper m_aFormComponentListeners;
::com::sun::star::uno::Reference< ::com::sun::star::form::binding::XValueBinding >
diff --git a/forms/source/inc/frm_strings.hxx b/forms/source/inc/frm_strings.hxx
index 13fbf9723eeb..1eaee92f8421 100644
--- a/forms/source/inc/frm_strings.hxx
+++ b/forms/source/inc/frm_strings.hxx
@@ -135,7 +135,7 @@ namespace frm
FORMS_CONSTASCII_STRING( PROPERTY_BUTTONTYPE, "ButtonType" );
FORMS_CONSTASCII_STRING( PROPERTY_STRINGITEMLIST, "StringItemList" );
FORMS_CONSTASCII_STRING( PROPERTY_DEFAULT_TEXT, "DefaultText" );
- FORMS_CONSTASCII_STRING( PROPERTY_DEFAULTCHECKED, "DefaultState" );
+ FORMS_CONSTASCII_STRING( PROPERTY_DEFAULT_STATE, "DefaultState" );
FORMS_CONSTASCII_STRING( PROPERTY_FORMATKEY, "FormatKey" );
FORMS_CONSTASCII_STRING( PROPERTY_FORMATSSUPPLIER, "FormatsSupplier" );
FORMS_CONSTASCII_STRING( PROPERTY_SUBMIT_ACTION, "SubmitAction" );
diff --git a/forms/source/inc/property.hrc b/forms/source/inc/property.hrc
index 065a46eb5b8c..0a3e3739d31a 100644
--- a/forms/source/inc/property.hrc
+++ b/forms/source/inc/property.hrc
@@ -118,7 +118,7 @@ namespace frm
#define PROPERTY_ID_SUBMIT_ENCODING (PROPERTY_ID_START + 74) // FmSubmitEncoding
#define PROPERTY_ID_DEFAULT_VALUE (PROPERTY_ID_START + 75) // ::rtl::OUString
#define PROPERTY_ID_SUBMIT_TARGET (PROPERTY_ID_START + 76) // ::rtl::OUString
-#define PROPERTY_ID_DEFAULTCHECKED (PROPERTY_ID_START + 77) // UINT16
+#define PROPERTY_ID_DEFAULT_STATE (PROPERTY_ID_START + 77) // UINT16
#define PROPERTY_ID_VALUE_SEQ (PROPERTY_ID_START + 78) // StringSeq
#define PROPERTY_ID_IMAGE_URL (PROPERTY_ID_START + 79) // ::rtl::OUString
// free
diff --git a/forms/source/inc/resettable.hxx b/forms/source/inc/resettable.hxx
new file mode 100644
index 000000000000..f8815d5e3eb3
--- /dev/null
+++ b/forms/source/inc/resettable.hxx
@@ -0,0 +1,75 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef FORMS_RESETTABLE_HXX
+#define FORMS_RESETTABLE_HXX
+
+/** === begin UNO includes === **/
+#include <com/sun/star/form/XResetListener.hpp>
+/** === end UNO includes === **/
+
+#include <cppuhelper/interfacecontainer.hxx>
+
+namespace cppu
+{
+ class OWeakObject;
+}
+
+//........................................................................
+namespace frm
+{
+//........................................................................
+
+ //====================================================================
+ //= ResetHelper
+ //====================================================================
+ class ResetHelper
+ {
+ public:
+ ResetHelper( ::cppu::OWeakObject& _parent, ::osl::Mutex& _mutex )
+ :m_rParent( _parent )
+ ,m_aResetListeners( _mutex )
+ {
+ }
+
+ // XReset equivalents
+ void addResetListener( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XResetListener >& _listener );
+ void removeResetListener( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XResetListener >& _listener );
+
+ // calling listeners
+ bool approveReset();
+ void notifyResetted();
+ void disposing();
+
+ private:
+ ::cppu::OWeakObject& m_rParent;
+ ::cppu::OInterfaceContainerHelper m_aResetListeners;
+ };
+
+//........................................................................
+} // namespace frm
+//........................................................................
+
+#endif // FORMS_RESETTABLE_HXX
diff --git a/forms/source/inc/togglestate.hxx b/forms/source/inc/togglestate.hxx
new file mode 100644
index 000000000000..04755000db19
--- /dev/null
+++ b/forms/source/inc/togglestate.hxx
@@ -0,0 +1,43 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef FORMS_TOGGLESTATE_HXX
+#define FORMS_TOGGLESTATE_HXX
+
+/** === begin UNO includes === **/
+/** === end UNO includes === **/
+
+//........................................................................
+namespace frm
+{
+//........................................................................
+
+ enum ToggleState { STATE_NOCHECK = 0, STATE_CHECK = 1, STATE_DONTKNOW = 2 };
+
+//........................................................................
+} // namespace frm
+//........................................................................
+
+#endif // FORMS_TOGGLESTATE_HXX
diff --git a/forms/source/misc/property.cxx b/forms/source/misc/property.cxx
index a47b7b73b706..564cd822f145 100644
--- a/forms/source/misc/property.cxx
+++ b/forms/source/misc/property.cxx
@@ -125,7 +125,7 @@ void PropertyInfoService::initialize()
ADD_PROP_ASSIGNMENT(BUTTONTYPE);
ADD_PROP_ASSIGNMENT(STRINGITEMLIST);
ADD_PROP_ASSIGNMENT(DEFAULT_TEXT);
- ADD_PROP_ASSIGNMENT(DEFAULTCHECKED);
+ ADD_PROP_ASSIGNMENT(DEFAULT_STATE);
ADD_PROP_ASSIGNMENT(DEFAULT_DATE);
ADD_PROP_ASSIGNMENT(DEFAULT_TIME);
ADD_PROP_ASSIGNMENT(DEFAULT_VALUE);