summaryrefslogtreecommitdiff
path: root/svtools/source/dialogs/propctrl.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svtools/source/dialogs/propctrl.cxx')
-rw-r--r--svtools/source/dialogs/propctrl.cxx503
1 files changed, 0 insertions, 503 deletions
diff --git a/svtools/source/dialogs/propctrl.cxx b/svtools/source/dialogs/propctrl.cxx
deleted file mode 100644
index 675a93ca728b..000000000000
--- a/svtools/source/dialogs/propctrl.cxx
+++ /dev/null
@@ -1,503 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * 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_svtools.hxx"
-
-
-#ifndef _USR_INTROSP_HXX
-#include <usr/inspect.hxx>
-#endif
-#ifndef _USR_SERINFO_HXX
-#include <usr/serinfo.hxx>
-#endif
-#ifndef _USR_INTROSP_HXX
-#include <usr/introsp.hxx>
-#endif
-
-#include <propctrl.hxx>
-#include <property.hxx>
-
-
-// Controller-Implementation
-class PropertyEditorControler_Impl : public SvPropertyDataControl
-{
- XIntrospectionAccessRef mxUnoAccess;
- PropertySequence mPropSeq;
- XPropertyEditorRef mxEditor;
- SvPropertyBox* mpPropBox;
- UsrAny maUnoObj;
-
-public:
- // Provisorisch direkt Window mitgeben
- PropertyEditorControler_Impl( SvPropertyBox* pPropBox_ );
- //SimplePropertyEditor_Impl( void );
-
- // Objekt zum Editieren setzen, dies loest das Eintragen
- // der Properties in die PropertyBox aus
- void setObject( XPropertyEditorRef xEditor_, const UsrAny& aToEditObj,
- /* HACK fuer History-Interface*/String aPath, BOOL bBack=FALSE, BOOL bForward=FALSE );
-
- /* SPAETER
- SMART_UNO_DECLARATION(ImplIntrospection,UsrObject);
-
- // Methoden von XInterface
- XInterface * queryInterface( Uik aUik );
- XIdlClassRef getIdlClass();
- */
-
- // Methoden von SvPropertyDataControl
- virtual void Modified( const String& aName,
- const String& aVal,
- void* pData);
-
- virtual void Clicked( const String& aName,
- const String& aVal,
- void* pData);
-
- virtual void Commit( const String& aName,
- const String& aVal,
- void* pData);
-
- virtual void Select( const String& aName,
- void* pData);
-
- virtual void LinkClicked(const String& aName,
- void* pData);
-
- // TODO: Das muss raus, sehr unglueckliche Schnittstelle
- // PropertyBox erzwingt Zustand des Controllers
- virtual String GetTheCorrectProperty() const;
-};
-
-// Methoden von XPropertyEditor
-PropertyEditorControler_Impl::PropertyEditorControler_Impl( SvPropertyBox* pPropBox_ )
-{
- mpPropBox = pPropBox_;
-}
-
-void PropertyEditorControler_Impl::setObject( XPropertyEditorRef xEditor_, const UsrAny& aToEditObj,
- /* HACK fuer History-Interface*/ String aPath, BOOL bBack, BOOL bForward )
-{
- static XIntrospectionRef xIntrospection;
-
- // Ohne Fenster laeuft gar nix
- if( !mpPropBox )
- return;
-
- // Fenster aufraeumen
- mpPropBox->ClearAll();
-
- // Editor und Objekt übernehmen
- mxEditor = xEditor_;
- maUnoObj = aToEditObj;
-
- if( !xIntrospection.is() )
- {
- // Introspection-Service holen
- XServiceManagerRef xServiceManager = getGlobalServiceManager();
- XServiceProviderRef xProv = xServiceManager->getServiceProvider
- ( "com.sun.star.beans.Introspection", UikSequence(), UikSequence() );
- xIntrospection = (XIntrospection *)xProv->newInstance()
- ->queryInterface( XIntrospection::getSmartUik() );
- }
- if( !xIntrospection.is() )
- return;
-
- // und unspecten
- mxUnoAccess = xIntrospection->inspect( maUnoObj );
- if( !mxUnoAccess.Is() )
- return;
-
- // Uns als Controler anmelden
- mpPropBox->SetController( this );
-
- // Properties anlegen
- mPropSeq = mxUnoAccess->getProperties();
- UINT32 nPropCount = mPropSeq.getLen();
- const Property* pProps = mPropSeq.getConstArray();
-
- // 1. Seite anlegen
- USHORT nPropPageId = mpPropBox->AppendPage("Properties");
-
- // Beim Eintragen solls nicht flimmern
- mpPropBox->DisableUpdate();
-
- // Dummy-Properties fuer Path und Navigation
- SvPropertyData aProperty;
- if( aPath.Len() )
- {
- // Interface und Structs werden Hyperlinks
- aProperty.bIsHyperLink = FALSE;
- aProperty.bIsLocked = TRUE;
- aProperty.bHasVisibleXButton = FALSE;
- aProperty.eKind = KOC_EDIT;
- aProperty.pControl = NULL;
- aProperty.pDataPtr = NULL;
- aProperty.aName = "Path";
- aProperty.aValue = aPath;
- mpPropBox->InsertEntry( aProperty );
- }
- if( bBack || bForward )
- {
- // Interface und Structs werden Hyperlinks
- aProperty.bIsHyperLink = TRUE;
- aProperty.bIsLocked = TRUE;
- // HACK, solange Hyperlink nicht funktioniert
- aProperty.bHasVisibleXButton = aProperty.bIsHyperLink;
- aProperty.eKind = KOC_EDIT;
- UINT32 iHandle;
- aProperty.pControl = NULL;
- if( bBack )
- {
- iHandle = 1000001;
- aProperty.pDataPtr = (void*)iHandle;
- aProperty.aName = "<-";
- aProperty.aValue = "Back";
- mpPropBox->InsertEntry( aProperty );
- }
- if( bForward )
- {
- iHandle = 1000000;
- aProperty.pDataPtr = (void*)iHandle;
- aProperty.aName = "->";
- aProperty.aValue = "Forward";
- mpPropBox->InsertEntry( aProperty );
- }
- }
-
- // Properties eintragen
- // TODO: Wo kommen die Strings her
- UINT32 i;
- for( i = 0 ; i < nPropCount ; i++ )
- {
- const Property& rProp = pProps[ i ];
-
- // TypeClass des Property ermitteln
- XIdlClassRef xPropClass = rProp.Type;
- if( !xPropClass.is() )
- {
- DBG_ERROR( "PropertyEditorControler_Impl::Commit(), Property without type" )
- return;
- }
- TypeClass eType = xPropClass->getTypeClass();
-
- // Interface und Structs werden Hyperlinks
- aProperty.bIsHyperLink = ( eType == TYPECLASS_INTERFACE || eType == TYPECLASS_STRUCT );
- aProperty.bIsLocked = ((rProp.Attributes & PROPERTY_READONLY) != 0 );
-
- // HACK, solange Hyperlink nicht funktioniert
- aProperty.bHasVisibleXButton = aProperty.bIsHyperLink;
-
- // Wert holen und in String wandeln
- UsrAny aVal = mxUnoAccess->getPropertyValueByIndex( maUnoObj, i );
- String aStrVal = AnyToString( aVal );
-
- // Properties reinbraten
- aProperty.eKind = KOC_EDIT;
- aProperty.aName = rProp.Name;
- aProperty.aValue = aStrVal;
- aProperty.pDataPtr = (void*)i;
- aProperty.pControl = NULL;
- //aProperty.theValues.Insert(new String("1"),aProperty.theValues.Count());
- //aProperty.theValues.Insert(new String("2"),aProperty.theValues.Count());
- //aProperty.theValues.Insert(new String("3"),aProperty.theValues.Count());
- //aProperty.theValues.Insert(new String("4"),aProperty.theValues.Count());
- mpPropBox->InsertEntry( aProperty );
- }
-
- // 2. Seite fuer Listener
- // TODO: Wo kommen die Eintraege her
- USHORT nListenerPageId = mpPropBox->AppendPage("Listener");
-
- XIdlClassSequence aSupportedListenerSeq = mxUnoAccess->getSupportedListeners();
- const XIdlClassRef* pListenerArray = aSupportedListenerSeq.getConstArray();
- UINT32 nIfaceCount = aSupportedListenerSeq.getLen();
-
- // Property-Data vorfuellen
- aProperty.eKind = KOC_EDIT;
- //aProperty.eKind = KOC_UNDEFINED;
- aProperty.aValue = "Listener-Value";
- aProperty.bHasVisibleXButton = TRUE;
- // TEST
- //aProperty.bIsHyperLink = TRUE;
- aProperty.bIsHyperLink = FALSE;
- aProperty.bIsLocked = TRUE;
- //aProperty.bIsLocked = FALSE;
- aProperty.pDataPtr = NULL;
- aProperty.pControl = NULL;
-
- for( UINT32 j = 0 ; j < nIfaceCount ; j++ )
- {
- const XIdlClassRef& rxIfaceClass = pListenerArray[j];
- aProperty.aName = rxIfaceClass->getName();
- mpPropBox->InsertEntry( aProperty );
- }
- mpPropBox->EnableUpdate();
- mpPropBox->SetPage( nPropPageId );
-}
-
-void PropertyEditorControler_Impl::Modified
-( const String& aName, const String& aVal, void* pData)
-{
-}
-
-void PropertyEditorControler_Impl::Clicked
-( const String& aName, const String& aVal, void* pData)
-{
- // HACK, solange LinkClicked nicht funktioniert
- UINT32 iPos = (UINT32)pData;
- UINT32 nPropCount = mPropSeq.getLen();
- if( iPos >= nPropCount )
- {
- // Spezial-IDs fuer forward/back?
- BOOL bForward = (iPos == 1000000);
- BOOL bBack = (iPos == 1000001);
- if( bForward || bBack )
- {
- // Unterstuetzt der PropertyEditor das?
- XPropertyEditorNavigationRef xPropEdNav = (XPropertyEditorNavigation*)
- mxEditor->queryInterface( XPropertyEditorNavigation::getSmartUik() );
- if( xPropEdNav.is() )
- {
- if( bForward )
- xPropEdNav->forward();
- else
- xPropEdNav->back();
- }
- }
- return;
- }
-
- const Property* pProps = mPropSeq.getConstArray();
- const Property& rProp = pProps[ iPos ];
- XIdlClassRef xPropClass = rProp.Type;
- if( !xPropClass.is() )
- {
- DBG_ERROR( "PropertyEditorControler_Impl::Commit(), Property without type" )
- return;
- }
- TypeClass eType = xPropClass->getTypeClass();
- if( eType == TYPECLASS_INTERFACE || eType == TYPECLASS_STRUCT )
- LinkClicked( aName, pData );
-}
-
-void PropertyEditorControler_Impl::Commit
-( const String& aName, const String& aVal, void* pData)
-{
- UINT32 iPos = (UINT32)pData;
- UINT32 nPropCount = mPropSeq.getLen();
- if( iPos >= nPropCount )
- return;
-
- // String in Property-Typ wandeln
- const Property* pProps = mPropSeq.getConstArray();
- const Property& rProp = pProps[ iPos ];
- XIdlClassRef xPropClass = rProp.Type;
- if( !xPropClass.is() )
- {
- DBG_ERROR( "PropertyEditorControler_Impl::Commit(), Property without type" )
- return;
- }
- TypeClass eType = xPropClass->getTypeClass();
- UsrAny aValue = StringToAny( aVal, eType );
-
- // Wert setzen
- mxUnoAccess->setPropertyValueByIndex( maUnoObj, iPos, aValue );
-
- // Wert neu holen und ggf. neu setzen
- UsrAny aNewVal = mxUnoAccess->getPropertyValueByIndex( maUnoObj, iPos );
- String aNewStrVal = AnyToString( aNewVal );
- if( aNewStrVal != aVal )
- mpPropBox->SetPropertyValue( aName, aNewStrVal );
-}
-
-void PropertyEditorControler_Impl::Select
-( const String& aName, void* pData)
-{
-}
-
-void PropertyEditorControler_Impl::LinkClicked(const String& aName, void* pData)
-{
- UINT32 iPos = (UINT32)pData;
- UINT32 nPropCount = mPropSeq.getLen();
- if( iPos >= nPropCount )
- return;
-
- // Wert holen und an Master-Controller zurueckgeben
- UsrAny aNewObj = mxUnoAccess->getPropertyValueByIndex( maUnoObj, iPos );
- mxEditor->setObject( aNewObj, aName );
-}
-
-
-// TODO: Das muss raus, sehr unglueckliche Schnittstelle
-// PropertyBox erzwingt Zustand des Controllers
-String PropertyEditorControler_Impl::GetTheCorrectProperty() const
-{
- return String();
-}
-
-
-SMART_UNO_IMPLEMENTATION(SimplePropertyEditor_Impl,UsrObject);
-
-// Methoden von XInterface
-XInterface * SimplePropertyEditor_Impl::queryInterface( Uik aUik )
-{
- if( aUik == XPropertyEditor::getSmartUik() )
- return (XPropertyEditor *)this;
- if( aUik == XPropertyEditorNavigation::getSmartUik() )
- return (XPropertyEditorNavigation *)this;
- return UsrObject::queryInterface( aUik );
-}
-
-XIdlClassRef SimplePropertyEditor_Impl::getIdlClass()
-{
- // TODO: Unterstuetzen
- return NULL;
-}
-
-
-// Methoden von SimplePropertyEditor_Impl
-SimplePropertyEditor_Impl::SimplePropertyEditor_Impl( Window *pParent )
- : maHistorySeq( 10 ), maHistoryNames( 10 ), bSimpleHistory( FALSE )
-{
- //XVCLComponent xC = pParent->getVCLComponent
- //xC->addVCLComponentListener( MyListener )
-
- pActiveControler = NULL;
- mpPropBox = new SvPropertyBox( pParent );
- mpPropBox->Show();
-
- long cxOut = pParent->GetOutputSizePixel().Width();
- long cyOut = pParent->GetOutputSizePixel().Height();
- Size aSize( cxOut, cyOut );
- mpPropBox->SetPosSizePixel( Point( 0, 0 ), aSize );
-
- mnHistoryCount = 0;
- mnActualHistoryLevel = -1;
-}
-
-SimplePropertyEditor_Impl::~SimplePropertyEditor_Impl()
-{
- delete mpPropBox;
- if( pActiveControler )
- delete pActiveControler;
-}
-
-// Private Methode zum Anlegen/Aktivieren der Controller
-void SimplePropertyEditor_Impl::showObject( const UsrAny& aToShowObj )
-{
- if( pActiveControler )
- delete pActiveControler;
-
- // Neuen Controller auf der Wiese anlegen (TODO: Controller cachen?)
- pActiveControler = new PropertyEditorControler_Impl( mpPropBox );
-
- XPropertyEditorRef xThis = (XPropertyEditor *)this;
- pActiveControler->setObject( xThis, aToShowObj,
- /*aPath*/bSimpleHistory ? getPath() : String(),
- /*bBack*/bSimpleHistory && mnActualHistoryLevel > 0,
- /*bForward*/bSimpleHistory && (INT32)mnHistoryCount > mnActualHistoryLevel );
-}
-
-String SimplePropertyEditor_Impl::getPath( void )
-{
- String aRetStr;
- const String* pStr = maHistoryNames.getConstArray();
- for( INT32 i = 0 ; i <= mnActualHistoryLevel ; i++ )
- {
- String aName = pStr[i];
-
- // Root speziell behandeln
- if( i == 0 )
- {
- aRetStr += aName;
- }
- else
- {
- // Ist es ein Index?
- long l = (long)aName;
- String aNumStr( l );
- if( aNumStr == aName )
- {
- aRetStr += '[';
- aRetStr += aName;
- aRetStr += ']';
- }
- else
- {
- aRetStr += '.';
- aRetStr += aName;
- }
- }
- }
- return aRetStr;
-}
-
-// Methoden von XPropertyEditor
-void SimplePropertyEditor_Impl::setObject( const UsrAny& aToEditObj, const XubString& aObjName )
-{
- // History pflegen
- mnActualHistoryLevel++;
- mnHistoryCount = (UINT32)mnActualHistoryLevel;
- UINT32 iHistorySize = maHistorySeq.getLen();
- if( mnHistoryCount > iHistorySize )
- {
- maHistorySeq.realloc( iHistorySize + 10 );
- maHistoryNames.realloc( iHistorySize + 10 );
- }
-
- // Neues Object eintragen
- maHistorySeq.getArray()[ mnHistoryCount ] = aToEditObj;
- maHistoryNames.getArray()[ mnHistoryCount ] = aObjName;
-
- // Object anzeigen
- showObject( aToEditObj );
-}
-
-// Methoden von PropertyEditorNavigation
-void SimplePropertyEditor_Impl::forward(void)
-{
- if( (INT32)mnHistoryCount > mnActualHistoryLevel )
- {
- // Naechstes Object darstellen
- mnActualHistoryLevel++;
- showObject( maHistorySeq.getConstArray()[mnActualHistoryLevel] );
- }
-}
-
-void SimplePropertyEditor_Impl::back(void)
-{
- if( mnActualHistoryLevel > 0 )
- {
- // Voriges Object darstellen
- mnActualHistoryLevel--;
- showObject( maHistorySeq.getConstArray()[mnActualHistoryLevel] );
- }
-}
-
-