Skip to main content



      Home
Home » Eclipse Projects » NatTable » column with by percent and group column header
column with by percent and group column header [message #1735240] Thu, 16 June 2016 10:26 Go to next message
Eclipse UserFriend
Hi,

I was using the setColumnWidthByPosition to set the percentage of the
column. BodyDataLayer.setColumnPercentageSizing(true) is set as well.

since I am using a group column header layer the
setColumnWidthByPosition does not have an effect.

Is this intended or may I have missed change some thing else while
adding the ColumnGroupLayer?

Any hints are appreciated, Martin
Re: column with by percent and group column header [message #1735243 is a reply to message #1735240] Thu, 16 June 2016 10:51 Go to previous messageGo to next message
Eclipse UserFriend
Not sure. Typically the column header gets its width derived from the body. I suspect the column group header should get its column widths derived from the column header.

Are you setting the column width on the column group header or the body? Not sure where which communication might not be passed accordingly.
Re: column with by percent and group column header [message #1735294 is a reply to message #1735243] Fri, 17 June 2016 03:13 Go to previous messageGo to next message
Eclipse UserFriend
Good Morning,

thanks Dirk. The column width is set at the BodyDataLayer only.

Please the implementation of the BodyLayerStack below:
class BodyLayerStack extends AbstractLayerTransform {
private SelectionLayer mSelectionLayer;
private DataLayer mBodyDataLayer;

public BodyLayerStack(BodyDataProvider dataProvider) {
mBodyDataLayer = new DataLayer(dataProvider);
mBodyDataLayer.setColumnPercentageSizing(true);

mBodyDataLayer.setColumnWidthByPosition(ColumnIndex.X_AXIS.getValue(), 5);
//
mBodyDataLayer.setColumnWidthByPosition(ColumnIndex.ITEMS_INFRA.getValue(),
9);

mBodyDataLayer.setColumnWidthByPosition(ColumnIndex.SHOW_H_LINES.getValue(),
5);


mBodyDataLayer.setColumnWidthByPosition(ColumnIndex.Y11_AXIS.getValue(), 5);

mBodyDataLayer.setColumnWidthByPosition(ColumnIndex.Y11_ITEMS_VALUES.getValue(),
7);

mBodyDataLayer.setColumnWidthByPosition(ColumnIndex.Y11_AVG_FUNCTION_TYPE.getValue(),
7);

mBodyDataLayer.setColumnWidthByPosition(ColumnIndex.Y11_COMPARATOR_FUNCTION_TYPE.getValue(),
5);


mBodyDataLayer.setColumnWidthByPosition(ColumnIndex.Y12_AXIS.getValue(), 5);

mBodyDataLayer.setColumnWidthByPosition(ColumnIndex.Y12_ITEMS_VALUES.getValue(),
7);

mBodyDataLayer.setColumnWidthByPosition(ColumnIndex.Y12_AVG_FUNCTION_TYPE.getValue(),
7);


mBodyDataLayer.setColumnWidthByPosition(ColumnIndex.Y21_AXIS.getValue(), 5);

mBodyDataLayer.setColumnWidthByPosition(ColumnIndex.Y21_ITEMS_VALUES.getValue(),
7);

mBodyDataLayer.setColumnWidthByPosition(ColumnIndex.Y21_AVG_FUNCTION_TYPE.getValue(),
7);


mBodyDataLayer.setColumnWidthByPosition(ColumnIndex.Y22_AXIS.getValue(), 5);

mBodyDataLayer.setColumnWidthByPosition(ColumnIndex.Y22_ITEMS_VALUES.getValue(),
7);

mBodyDataLayer.setColumnWidthByPosition(ColumnIndex.Y22_AVG_FUNCTION_TYPE.getValue(),
7);

mSelectionLayer = new SelectionLayer(mBodyDataLayer);
ViewportLayer viewportLayer = new ViewportLayer(mSelectionLayer);
setUnderlyingLayer(viewportLayer);
}

public SelectionLayer getSelectionLayer() {
return mSelectionLayer;
}

public DataLayer getBodyDataLayer() {
return mBodyDataLayer;
}
}

as well as the ColumnHeaderLayerStack
class ColumnHeaderLayerStack extends AbstractLayerTransform {

private ColumnHeaderLayer mColHeaderLayer;
private ColumnGroupHeaderLayer mColumnGroupHeaderLayer;

public ColumnHeaderLayerStack(IDataProvider dataProvider,
BodyLayerStack pBodyLayer) {
DataLayer dataLayer = new DataLayer(dataProvider);
mColHeaderLayer = new ColumnHeaderLayer(dataLayer, pBodyLayer,
pBodyLayer.getSelectionLayer());
ColumnGroupModel lColumnGroupModel = new ColumnGroupModel();
mColumnGroupHeaderLayer = new ColumnGroupHeaderLayer(mColHeaderLayer,
pBodyLayer.getSelectionLayer(), lColumnGroupModel);
mColumnGroupHeaderLayer.addColumnsIndexesToGroup(_("X Axis"),
ColumnIndex.X_AXIS.mValue, ColumnIndex.ITEMS_INFRA.mValue,
ColumnIndex.SHOW_H_LINES.mValue);
mColumnGroupHeaderLayer.setGroupUnbreakable(1);

mColumnGroupHeaderLayer.addColumnsIndexesToGroup(_("Y Axis Primary
1"), ColumnIndex.Y11_AXIS.mValue, ColumnIndex.Y11_ITEMS_VALUES.mValue,
ColumnIndex.Y11_AVG_FUNCTION_TYPE.mValue,
ColumnIndex.Y11_COMPARATOR_FUNCTION_TYPE.mValue);
mColumnGroupHeaderLayer.setGroupUnbreakable(2);

mColumnGroupHeaderLayer.addColumnsIndexesToGroup(_("Y Axis Primary
2"), ColumnIndex.Y12_AXIS.mValue, ColumnIndex.Y12_ITEMS_VALUES.mValue,
ColumnIndex.Y12_AVG_FUNCTION_TYPE.mValue);
mColumnGroupHeaderLayer.setGroupUnbreakable(3);

mColumnGroupHeaderLayer.addColumnsIndexesToGroup(_("Y Axis Secondary
1"), ColumnIndex.Y21_AXIS.mValue,
ColumnIndex.Y21_ITEMS_VALUES.mValue,
ColumnIndex.Y21_AVG_FUNCTION_TYPE.mValue);
mColumnGroupHeaderLayer.setGroupUnbreakable(4);

mColumnGroupHeaderLayer.addColumnsIndexesToGroup(_("Y Axis Secondary
2"), ColumnIndex.Y22_AXIS.mValue,
ColumnIndex.Y22_ITEMS_VALUES.mValue,
ColumnIndex.Y22_AVG_FUNCTION_TYPE.mValue);
mColumnGroupHeaderLayer.setGroupUnbreakable(5);

setUnderlyingLayer(mColHeaderLayer);
}

public ColumnGroupHeaderLayer getColumnGroupHeaderLayer() {
return mColumnGroupHeaderLayer;
}
}


Do you see any thing suspicious?

Thanks, Martin
Re: column with by percent and group column header [message #1735297 is a reply to message #1735294] Fri, 17 June 2016 03:32 Go to previous messageGo to next message
Eclipse UserFriend
Why don't you set mColumnGroupHeaderLayer as underlying layer of your column header layer stack?
Re: column with by percent and group column header [message #1735307 is a reply to message #1735297] Fri, 17 June 2016 05:18 Go to previous messageGo to next message
Eclipse UserFriend
Sorry, I forgot to replace when I was adding the ColumnGroupHeaderLayer.
I use now setUnderlyingLayer(mColumnGroupHeaderLayer); but the issues
still exist :(

Modified code ColumnHeaderLayerStack:

public ColumnHeaderLayerStack(IDataProvider dataProvider,
BodyLayerStack pBodyLayer) {
DataLayer dataLayer = new DataLayer(dataProvider);
mColHeaderLayer = new ColumnHeaderLayer(dataLayer, pBodyLayer,
pBodyLayer.getSelectionLayer());
ColumnGroupModel lColumnGroupModel = new ColumnGroupModel();
mColumnGroupHeaderLayer = new ColumnGroupHeaderLayer(mColHeaderLayer,
pBodyLayer.getSelectionLayer(), lColumnGroupModel);
mColumnGroupHeaderLayer.addColumnsIndexesToGroup(_("X Axis"),
ColumnIndex.X_AXIS.mValue, ColumnIndex.ITEMS_INFRA.mValue,
ColumnIndex.SHOW_H_LINES.mValue);
mColumnGroupHeaderLayer.setGroupUnbreakable(1);

mColumnGroupHeaderLayer.addColumnsIndexesToGroup(_("Y Axis Primary
1"), ColumnIndex.Y11_AXIS.mValue, ColumnIndex.Y11_ITEMS_VALUES.mValue,
ColumnIndex.Y11_AVG_FUNCTION_TYPE.mValue,
ColumnIndex.Y11_COMPARATOR_FUNCTION_TYPE.mValue);
mColumnGroupHeaderLayer.setGroupUnbreakable(2);

mColumnGroupHeaderLayer.addColumnsIndexesToGroup(_("Y Axis Primary
2"), ColumnIndex.Y12_AXIS.mValue, ColumnIndex.Y12_ITEMS_VALUES.mValue,
ColumnIndex.Y12_AVG_FUNCTION_TYPE.mValue);
mColumnGroupHeaderLayer.setGroupUnbreakable(3);

mColumnGroupHeaderLayer.addColumnsIndexesToGroup(_("Y Axis Secondary
1"), ColumnIndex.Y21_AXIS.mValue,
ColumnIndex.Y21_ITEMS_VALUES.mValue,
ColumnIndex.Y21_AVG_FUNCTION_TYPE.mValue);
mColumnGroupHeaderLayer.setGroupUnbreakable(4);

mColumnGroupHeaderLayer.addColumnsIndexesToGroup(_("Y Axis Secondary
2"), ColumnIndex.Y22_AXIS.mValue,
ColumnIndex.Y22_ITEMS_VALUES.mValue,
ColumnIndex.Y22_AVG_FUNCTION_TYPE.mValue);
mColumnGroupHeaderLayer.setGroupUnbreakable(5);

setUnderlyingLayer(mColumnGroupHeaderLayer);
}
Re: column with by percent and group column header [message #1735319 is a reply to message #1735307] Fri, 17 June 2016 07:00 Go to previous messageGo to next message
Eclipse UserFriend
Have you tried to call setColumnWidthPercentageByPosition() instead of setColumnWidthByPosition()?

And please use the code formatting for posting code. It is very hard to read your code postings as simple text.
Re: column with by percent and group column header [message #1735332 is a reply to message #1735319] Fri, 17 June 2016 08:10 Go to previous messageGo to next message
Eclipse UserFriend
Thanks Dirk,

yes setColumnWidthPercentageByPosition() works fine! :)

So I removed mBodyDataLayer.setColumnPercentageSizing(true); and call
setColumnWidthPercentageByPosition() instead of setColumnWidthByPosition()


Sorry to not format as source code. I am using thunderbird as forum
client and I am no sure how to format in code.
My login for the newsgroup unfortunately does not allow me to login to
use the web front end.

May be using html tags?
<code>
setColumnWidthPercentageByPosition()
</code>
Re: column with by percent and group column header [message #1735337 is a reply to message #1735332] Fri, 17 June 2016 08:38 Go to previous messageGo to next message
Eclipse UserFriend
instead of the HTML tag syntax with the lower and greater than signs, you should use []
Re: column with by percent and group column header [message #1735339 is a reply to message #1735337] Fri, 17 June 2016 08:42 Go to previous message
Eclipse UserFriend
Thanks

here the solution code:

		public BodyLayerStack(BodyDataProvider dataProvider) {
			mBodyDataLayer = new DataLayer(dataProvider);

		 
mBodyDataLayer.setColumnWidthPercentageByPosition(ColumnIndex.X_AXIS.getValue(), 
5);
		 
mBodyDataLayer.setColumnWidthPercentageByPosition(ColumnIndex.SHOW_H_LINES.getValue(), 
5);

		 
mBodyDataLayer.setColumnWidthPercentageByPosition(ColumnIndex.Y11_AXIS.getValue(), 
4);
		 
mBodyDataLayer.setColumnWidthPercentageByPosition(ColumnIndex.Y11_ITEMS_VALUES.getValue(), 
7);
		 
mBodyDataLayer.setColumnWidthPercentageByPosition(ColumnIndex.Y11_AVG_FUNCTION_TYPE.getValue(), 
7);
		 
mBodyDataLayer.setColumnWidthPercentageByPosition(ColumnIndex.Y11_COMPARATOR_FUNCTION_TYPE.getValue(), 
3);

		 
mBodyDataLayer.setColumnWidthPercentageByPosition(ColumnIndex.Y12_AXIS.getValue(), 
4);
		 
mBodyDataLayer.setColumnWidthPercentageByPosition(ColumnIndex.Y12_ITEMS_VALUES.getValue(), 
7);
		 
mBodyDataLayer.setColumnWidthPercentageByPosition(ColumnIndex.Y12_AVG_FUNCTION_TYPE.getValue(), 
7);

		 
mBodyDataLayer.setColumnWidthPercentageByPosition(ColumnIndex.Y21_AXIS.getValue(), 
4);
		 
mBodyDataLayer.setColumnWidthPercentageByPosition(ColumnIndex.Y21_ITEMS_VALUES.getValue(), 
7);
		 
mBodyDataLayer.setColumnWidthPercentageByPosition(ColumnIndex.Y21_AVG_FUNCTION_TYPE.getValue(), 
7);

		 
mBodyDataLayer.setColumnWidthPercentageByPosition(ColumnIndex.Y22_AXIS.getValue(), 
4);
		 
mBodyDataLayer.setColumnWidthPercentageByPosition(ColumnIndex.Y22_ITEMS_VALUES.getValue(), 
7);
		 
mBodyDataLayer.setColumnWidthPercentageByPosition(ColumnIndex.Y22_AVG_FUNCTION_TYPE.getValue(), 
7);

			mSelectionLayer = new SelectionLayer(mBodyDataLayer);
			ViewportLayer viewportLayer = new ViewportLayer(mSelectionLayer);
			setUnderlyingLayer(viewportLayer);
		}

Previous Topic:Copy/paste from external source
Next Topic:Nattable with "horizontal tree" structure
Goto Forum:
  


Current Time: Wed Jul 23 19:26:18 EDT 2025

Powered by FUDForum. Page generated in 0.04060 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top