/*******************************************************************************
* Copyright (c) 2013 hangum.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v2.1
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Contributors:
* hangum - initial API and implementation
******************************************************************************/
package com.hangum.tadpole.mongodb.core.dialogs.collection.index;
import org.apache.log4j.Logger;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ComboBoxCellEditor;
import org.eclipse.jface.viewers.EditingSupport;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import com.hangum.tadpole.engine.query.dao.mongodb.CollectionFieldDAO;
import com.hangum.tadpole.engine.query.dao.system.UserDBDAO;
/**
* table comment editor
*
* @author hangum
*
*/
public class FieldIndexEditorSupport extends EditingSupport {
/**
*
*/
private static final long serialVersionUID = -6292003867430114514L;
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(FieldIndexEditorSupport.class);
private final TreeViewer viewer;
private UserDBDAO userDB;
public static final String[] arryIndexKey = new String[] {"", "Ascending", "Desending", "Geospatial"};
public static final Object[] arryIndexValue = new Object[] {0, 1, -1, "2d"};
/**
*
* @param viewer
* @param explorer
*/
public FieldIndexEditorSupport(TreeViewer viewer, UserDBDAO userDB) {
super(viewer);
this.viewer = viewer;
this.userDB = userDB;
}
@Override
protected CellEditor getCellEditor(Object element) {
return new ComboBoxCellEditor(viewer.getTree(), arryIndexKey, SWT.READ_ONLY);
}
@Override
protected boolean canEdit(Object element) {
return true;
}
@Override
protected Object getValue(Object element) {
CollectionFieldDAO dao = (CollectionFieldDAO) element;
for (int i=0; i<arryIndexKey.length; i++) {
if(arryIndexKey[i].equals(dao.getNewIndex())) return i;
}
return 0;
}
@Override
protected void setValue(Object element, Object value) {
try {
CollectionFieldDAO dao = (CollectionFieldDAO) element;
String tmpVal = arryIndexKey[Integer.valueOf(""+value)];
dao.setNewIndex(tmpVal);
} catch (Exception e) {
logger.error("setValue error ", e);
}
viewer.update(element, null);
}
}