blob: b52b98a0799ece6f9b72db3755cd58d750737185 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
package com.sun.star.wizards.text;
import com.sun.star.container.XIndexAccess;
import com.sun.star.container.XNameAccess;
import com.sun.star.container.XNamed;
import com.sun.star.frame.XFrame;
import com.sun.star.lang.Locale;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.style.BreakType;
import com.sun.star.table.XCellRange;
import com.sun.star.text.XSimpleText;
import com.sun.star.text.XText;
import com.sun.star.text.XTextContent;
import com.sun.star.text.XTextDocument;
import com.sun.star.text.XTextTable;
import com.sun.star.text.XTextTablesSupplier;
import com.sun.star.uno.AnyConverter;
import com.sun.star.uno.Exception;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XInterface;
import com.sun.star.util.XNumberFormatsSupplier;
import com.sun.star.view.XSelectionSupplier;
import com.sun.star.wizards.common.Desktop;
import com.sun.star.wizards.common.Helper;
import com.sun.star.wizards.common.NumberFormatter;
public class TextTableHandler
{
public XTextTablesSupplier xTextTablesSupplier;
public XMultiServiceFactory xMSFDoc;
public XTextDocument xTextDocument;
public XSimpleText xSimpleText;
private XText xText;
private NumberFormatter oNumberFormatter;
private Locale aCharLocale;
/** Creates a new instance of TextTableHandler */
public TextTableHandler(XMultiServiceFactory xMSF, XTextDocument xTextDocument)
{
try
{
this.xMSFDoc = xMSF;
this.xTextDocument = xTextDocument;
xText = xTextDocument.getText();
xTextTablesSupplier = UnoRuntime.queryInterface(XTextTablesSupplier.class, xTextDocument);
xSimpleText = UnoRuntime.queryInterface(XSimpleText.class, xTextDocument.getText());
XNumberFormatsSupplier xNumberFormatsSupplier = UnoRuntime.queryInterface(XNumberFormatsSupplier.class, xTextDocument);
aCharLocale = (Locale) Helper.getUnoStructValue((Object) xTextDocument, "CharLocale");
oNumberFormatter = new NumberFormatter(xNumberFormatsSupplier, aCharLocale);
}
catch (java.lang.Exception e)
{
e.printStackTrace(System.out);
}
}
public NumberFormatter getNumberFormatter()
{
return oNumberFormatter;
}
public XTextTable getByName(String _sTableName)
{
XTextTable xTextTable = null;
try
{
XNameAccess xAllTextTables = xTextTablesSupplier.getTextTables();
if (xAllTextTables.hasByName(_sTableName))
{
Object oTable = xAllTextTables.getByName(_sTableName);
xTextTable = UnoRuntime.queryInterface(XTextTable.class, oTable);
}
}
catch (Exception exception)
{
exception.printStackTrace(System.out);
}
return xTextTable;
}
public com.sun.star.text.XTextTable getlastTextTable()
{
try
{
XIndexAccess xAllTextTables = UnoRuntime.queryInterface(XIndexAccess.class, xTextTablesSupplier.getTextTables());
int MaxIndex = xAllTextTables.getCount() - 1;
Object oTable = xAllTextTables.getByIndex(MaxIndex);
return UnoRuntime.queryInterface(XTextTable.class, oTable);
}
catch (Exception exception)
{
exception.printStackTrace(System.out);
return null;
}
}
public void insertTextTable(com.sun.star.text.XTextCursor xTextCursor)
{
try
{
com.sun.star.uno.XInterface xTextTable = (XInterface) xMSFDoc.createInstance("com.sun.star.text.TextTable");
XTextContent xTextContentTable = UnoRuntime.queryInterface(XTextContent.class, xTextTable);
if (xTextCursor == null)
{
xTextCursor = xTextDocument.getText().createTextCursor();
xTextCursor.gotoEnd(false);
}
xTextCursor.getText().insertTextContent(xTextCursor, xTextContentTable, false);
}
catch (Exception exception)
{
exception.printStackTrace(System.out);
}
}
public void removeAllTextTables()
{
try
{
XIndexAccess xAllTextTables = UnoRuntime.queryInterface(XIndexAccess.class, xTextTablesSupplier.getTextTables());
int TextTableCount = xAllTextTables.getCount();
for (int i = TextTableCount - 1; i >= 0; i--)
{
removeTextTable(xAllTextTables.getByIndex(i));
}
}
catch (Exception exception)
{
exception.printStackTrace(System.out);
}
}
public void removeLastTextTable()
{
try
{
XIndexAccess xAllTextTables = UnoRuntime.queryInterface(XIndexAccess.class, xTextTablesSupplier.getTextTables());
Object oTextTable = xAllTextTables.getByIndex(xAllTextTables.getCount() - 1);
removeTextTable(oTextTable);
}
catch (Exception exception)
{
exception.printStackTrace(System.out);
}
}
public void removeTextTable(Object oTextTable)
{
try
{
XTextContent xTextContentTable = UnoRuntime.queryInterface(XTextContent.class, oTextTable);
xTextDocument.getText().removeTextContent(xTextContentTable);
}
catch (Exception exception)
{
exception.printStackTrace(System.out);
}
}
public void removeTextTablebyName(String TableName)
{
try
{
XNameAccess xAllTextTables = xTextTablesSupplier.getTextTables();
if (xAllTextTables.hasByName(TableName))
{
removeTextTable(xAllTextTables.getByName(TableName));
}
}
catch (Exception exception)
{
exception.printStackTrace(System.out);
}
}
public void renameTextTable(String OldTableName, String NewTableName)
{
try
{
XNameAccess xTextTableNames = xTextTablesSupplier.getTextTables();
if (xTextTableNames.hasByName(OldTableName))
{
Object oTextTable = xTextTableNames.getByName(OldTableName);
XNamed xTextTableName = UnoRuntime.queryInterface(XNamed.class, oTextTable);
xTextTableName.setName(NewTableName);
}
}
catch (Exception exception)
{
exception.printStackTrace(System.out);
}
}
public static BreakType resetBreakTypeofTextTable(Object oTextTable)
{
BreakType CorrBreakValue = null;
BreakType BreakValue = (BreakType) com.sun.star.wizards.common.Helper.getUnoStructValue(oTextTable, "BreakType");
// if (BreakValue.equals(BreakType.NONE) == false){
// CorrBreakValue = BreakValue;
Helper.setUnoPropertyValue(oTextTable, "BreakType", BreakType.NONE);
// }
return BreakType.NONE;
}
public void adjustOptimalTableWidths(XMultiServiceFactory _xMSF, XTextTable xTextTable)
{ // setTableColumnSeparators(){
try
{
XFrame xFrame = this.xTextDocument.getCurrentController().getFrame();
int ColCount = xTextTable.getColumns().getCount();
XCellRange xCellRange = UnoRuntime.queryInterface(XCellRange.class, xTextTable);
XCellRange xLocCellRange = xCellRange.getCellRangeByPosition(0, 0, ColCount - 1, 1);
short iHoriOrient = AnyConverter.toShort(Helper.getUnoPropertyValue(xTextTable, "HoriOrient"));
XSelectionSupplier xSelection = UnoRuntime.queryInterface(XSelectionSupplier.class, xTextDocument.getCurrentController());
xSelection.select(xLocCellRange);
Desktop.dispatchURL(_xMSF, ".Uno:DistributeColumns", xFrame);
Desktop.dispatchURL(_xMSF, ".Uno:SetOptimalColumnWidth", xFrame);
Helper.setUnoPropertyValue(xTextTable, "HoriOrient", new Short(iHoriOrient));
}
catch (Exception exception)
{
exception.printStackTrace(System.out);
}
}
}