// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Table component customization
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Table {
  view: true;
}

View {
  showGrid: false;
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Style Sheet renderer customization
// 
// Adding new function to handle file length
// conversion.
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
StyleSheet {
  functionList: "datasource.explorer.ByteFunction";
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Table accepted class customization
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
object."datasource.explorer.FileObject" {
  tableColumnOrder: "name, length, lastModified, hidden";
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Table header customization
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Changing sort priority
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
attribute."datasource.explorer.FileObject/name" {
  sortingUsingDisplayValues: true;
  sortingPriority: 0;
  sortingMode: ASCENDING;
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Changing column width
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
attribute."datasource.explorer.FileObject/lastModified" {
  preferredWidth: 130;
}
attribute."datasource.explorer.FileObject/hidden" {
  preferredWidth: 50;
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Hiding columns
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
attribute."datasource.explorer.FileObject/directory" {
  visible: false;
}
attribute."datasource.explorer.FileObject/parent" {
  visible: false;
}
attribute."datasource.explorer.FileObject/root" {
  visible: false;
}
attribute."datasource.explorer.FileObject/path" {
  visible: false;
}
attribute."datasource.explorer.FileObject/exists" {
  visible: false;
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Table cell customization
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Setting labels and icons
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
object."datasource.explorer.FileObject/name" {
  label: @name;
  labelVisible: true;
  iconVisible: true;
}
object."datasource.explorer.FileObject/name"[directory=true] {
  icon: '@|image("directory.gif")';
}
object."datasource.explorer.FileObject/name"[directory=false] {
  icon: '@|image("file.gif")';
}
object."datasource.explorer.FileObject/hidden" {
  labelVisible: false;
  icon: '@|image("check.png")';
  iconVisible: @hidden;
  horizontalAlignment: CENTER;
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Setting label with date formatting
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
object."datasource.explorer.FileObject/lastModified" {
  label: '@|format(@=dateFormat, @lastModified)';
}
#dateFormat {
  class: 'ilog.cpl.util.text.IlpSimpleDateFormat';
  pattern: "MM/dd/yyyy hh:mm a";
}

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Setting label with length conversion
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
object."datasource.explorer.FileObject/length" {
  label: '@|byte(@length)';
  horizontalAlignment: CENTER;
}
object."datasource.explorer.FileObject/lastModified" {
  horizontalAlignment: CENTER;
}